I am observing some strange numbers in /proc/stat while running a simple
micro-benchmark, which transmits UDP packets. The machine is a dual Xeon
with HyperThreading, which gives 4 logical processors, and 4 Gigabit
NICs, which I am trying to saturate.
In the following experiment, I have pinned the transmitting process to
logical processors 2 and 3 (i.e., to physical processor #1), and the
network interrupts to logical processors 0 and 1 (two IRQs to each).
Below is a snippet from mpstat, which reads /proc/stat. It is clear that
the affinity was set as expected. What I find strange is that logical
processor 2 seems to be handling a lot of soft IRQs, while LP 1's
numbers are close to 0. If I understand the kernel code correctly, then
soft IRQs are local, which means that only logical processors 0 and 1
should be handling network soft IRQs. Moreover, IRQ numbers are at 0
(which perhaps can be explained by good hard interrupt handling, which
does very little).
In account_system_time(), the softirq field of the statistics is updated
if the SOFTIRQ_MASK flag is set, but I could not find where it was being
turned on (I expected it to be in do_softirq()).
The options I can think of are:
1. The statistics accounting is inaccurate, or even buggy
2. Some other soft IRQ is executing on logical processor 2
I find option 2 unlikely, given that the machine does nothing else but
running the network-intensive benchmark.
Ideas?
Thanks,
Elad
03:32:02 PM CPU %user %nice %sys %iowait %irq %soft %steal
%idle intr/s
03:32:04 PM all 1.35 0.00 16.95 0.00 0.00 6.14 0.00
75.55 8007.00
03:32:04 PM 0 0.00 0.00 0.00 0.00 0.00 0.50 0.00
99.50 4001.50
03:32:04 PM 1 0.00 0.00 0.50 0.00 0.00 0.50 0.00
99.01 4003.00
03:32:04 PM 2 5.56 0.00 63.89 0.00 0.00 22.69 0.00
7.87 0.50
03:32:04 PM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00
100.00 2.00
03:32:04 PM 4 0.00 0.00 0.00 0.00 0.00 0.00 0.00
0.00 0.00
03:32:04 PM CPU %user %nice %sys %iowait %irq %soft %steal
%idle intr/s
03:32:06 PM all 1.74 0.00 18.16 0.00 0.00 10.95 0.00
69.15 8047.24
03:32:06 PM 0 0.00 0.00 0.00 0.00 0.00 24.62 0.00
75.38 4022.11
03:32:06 PM 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
100.00 4022.61
03:32:06 PM 2 1.51 0.00 13.07 0.00 0.00 4.02 0.00
81.41 1.01
03:32:06 PM 3 4.93 0.00 58.62 0.00 0.00 14.78 0.00
21.67 2.01
03:32:06 PM 4 0.00 0.00 0.00 0.00 0.00 0.00 0.00
0.00 0.00
03:32:06 PM CPU %user %nice %sys %iowait %irq %soft %steal
%idle intr/s
03:32:08 PM all 1.50 0.00 18.02 0.00 0.13 10.76 0.00
69.59 8007.00
03:32:08 PM 0 0.00 0.00 0.00 0.00 0.00 20.00 0.00
80.00 4001.00
03:32:08 PM 1 0.00 0.00 0.00 0.00 0.50 3.98 0.00
95.52 4003.00
03:32:08 PM 2 3.47 0.00 36.14 0.00 0.00 9.90 0.00
50.50 1.00
03:32:08 PM 3 3.03 0.00 35.86 0.00 0.00 9.60 0.00
51.52 2.00
03:32:08 PM 4 0.00 0.00 0.00 0.00 0.00 0.00 0.00
0.00 0.00
--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ