mirror of
https://github.com/SCST-project/scst.git
synced 2026-05-14 09:11:27 +00:00
scripts/spread-mlx4-ib-interrupts: Add to repository
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6027 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
55
scripts/spread-mlx4-ib-interrupts
Executable file
55
scripts/spread-mlx4-ib-interrupts
Executable file
@@ -0,0 +1,55 @@
|
||||
#!/bin/awk -f
|
||||
|
||||
BEGIN {
|
||||
if (debug != "")
|
||||
print "[<node>, <per_node_cpu_idx>]: <cpu>";
|
||||
"ls -1d /sys/devices/system/node/node* 2>&1 | wc -l" | getline nodes
|
||||
if (nodes > 1) {
|
||||
for (i = 0; i < nodes; i++) {
|
||||
cpus_per_node = 0
|
||||
while (("cd /sys/devices/system/cpu && ls -d cpu*/node" i " | sed 's/^cpu//;s,/.*,,'|sort -n" | getline j) > 0) {
|
||||
if (debug != "")
|
||||
print "[" i ", " cpus_per_node "]: " j
|
||||
cpu[i, cpus_per_node++] = j
|
||||
}
|
||||
}
|
||||
} else {
|
||||
cpus_per_node = 0
|
||||
while (("cd /sys/devices/system/cpu && ls -d cpu[0-9]* | sed 's/^cpu//'|sort -n" | getline j) > 0) {
|
||||
if (debug != "")
|
||||
print "[0, " cpus_per_node "]: " j
|
||||
cpu[0, cpus_per_node++] = j
|
||||
}
|
||||
}
|
||||
for (i = 0; i < nodes; i++)
|
||||
nextcpu[i] = 0
|
||||
while (("sed -n 's/.*mlx4-ib-\\([0-9]*\\)-[0-9]*@\\(.*\\)$/\\1 \\2/p' /proc/interrupts | uniq" | getline) > 0) {
|
||||
port = $1
|
||||
bus = substr($0, length($1) + 2)
|
||||
if (debug != "")
|
||||
print "HCA port = " port "; bus = " bus
|
||||
irqcount = 0
|
||||
while (("sed -n 's/^[[:blank:]]*\\([0-9]*\\):[0-9[:blank:]]*[^[:blank:]]*[[:blank:]]*\\(mlx4-ib-" port "-[0-9]*@" bus "\\)$/\\1 \\2/p' </proc/interrupts" | getline) > 0) {
|
||||
irq[irqcount] = $1
|
||||
irqname[irqcount] = substr($0, length($1) + 2)
|
||||
irqcount++
|
||||
}
|
||||
for (i = 0; i < nodes; i++) {
|
||||
ch_start = i * irqcount / nodes
|
||||
ch_end = (i + 1) * irqcount / nodes
|
||||
for (ch = ch_start; ch < ch_end; ch++) {
|
||||
c = cpu[i, nextcpu[i]++ % cpus_per_node]
|
||||
if (nodes > 1)
|
||||
nodetxt = " (node " i ")"
|
||||
else
|
||||
nodetxt = ""
|
||||
print "IRQ " irq[ch] " (" irqname[ch] "): CPU " c nodetxt
|
||||
cmd="echo " c " >/proc/irq/" irq[ch] "/smp_affinity_list"
|
||||
if (debug != "")
|
||||
print cmd
|
||||
system(cmd)
|
||||
}
|
||||
}
|
||||
}
|
||||
exit 0
|
||||
}
|
||||
Reference in New Issue
Block a user