Bart, Thanks for sharing the script. Will drop the patch. Regards, Quinn Tran On 2/5/16, 11:42 AM, "Bart Van Assche" <bart.vanassche@xxxxxxxxxxx> wrote: >On 02/05/2016 10:49 AM, Quinn Tran wrote: >> On 2/4/16, 10:20 AM, "Bart Van Assche" <bart.vanassche@xxxxxxxxxxx> wrote: >>> On 02/04/2016 08:45 AM, Himanshu Madhani wrote: >>>> From: Quinn Tran <quinn.tran@xxxxxxxxxx> >>>> >>>>> cat /sys/kernel/debug/qla2xxx/*/irq_cpuid >>>> qla2xxx_81 >>>> IRQ Name Vector CPUID >>>> qla2xxx (default) 150 9 >>>> qla2xxx (rsp_q) 151 9 >>>> qla2xxx (atio_q) 152 9 >>> >>> Hello Quinn and Himanshu, >>> >>> Do you think it would be possible to generate this information via a >>> user-space script from /proc/interrupts and /proc/irq/<n>/smp_affinity? >>> >>> Thanks, >>> >>> Bart. >> >> Bart, >> >> Currently, the data from the 2 mentioned “/proc” entry points were not able to give us the host_id/port & the vector information. >> >> The 2 alternatives are i) change the driver code to register host id along with the vector and add script to combine the infos, ii) 1 code change that gives us the summary. >> >> We choose path 2 for the ease of usage. > >Hello Quinn, > >Please have another look at /proc/interrupts and >/proc/irq/<n>/smp_affinity. The information that is exported through >this patch is already available there. This is why I think this patch >should be dropped. All you need is something like the shell script below. > >Sample output (nn = NUMA node; num = IRQ vector): > >==== IRQs >nn cpu num count name >0 6 105 1753 PCI-MSI-edge qla2xxx (rsp_q) >1 1 104 8781 PCI-MSI-edge qla2xxx (default) >1 1 107 1629 PCI-MSI-edge qla2xxx (rsp_q) > >The shell script that produced the above output: > >ppi() { > { echo "$(<"/sys/devices/system/cpu/cpu$1/topology/physical_package_id")" || echo '?'; } 2>/dev/null >} > >echo "==== IRQs" >printf "%-2s %-3s %-3s %12s %-50s\n" nn cpu num count name >cat /proc/interrupts | > while read line; do > num="$(echo "$line" | sed -n 's/^[[:blank:]]*\([0-9]*\):\([0-9[:blank:]]*\)\(.*\)/\1/p')" > [ -z "$num" ] && continue > count=0 > for c in $(echo "$line" | sed -n 's/^[[:blank:]]*\([0-9]*\):\([0-9[:blank:]]*\)\(.*\)/\2/p'); do > count=$((count+c)) > done > name="$(echo "$line" | sed -n 's/^[[:blank:]]*\([0-9]*\):\([0-9[:blank:]]*\)\(.*\)/\3/p')" > if [ -r "/proc/irq/$num/smp_affinity_list" ]; then > al="$(<"/proc/irq/$num/smp_affinity_list")" > cpu="${al/-*}" > cpu="${cpu/,*}" > ppi="$(ppi "$cpu")" > else > cpu="?" > ppi="?" > fi > printf "%-2s %-3d %-3d %12d %-50s\n" "$ppi" "$cpu" "$num" "$count" "$name" > done | > sort -n -k1,3 > >Thanks, > >Bart.
<<attachment: winmail.dat>>