Tuesday, January 20, 2009

NIC Interrupts on Multi-Core

I wonder how many people out there have this issue and don't even know it. Let me explain what happening and how you would detect the problem and then suggest some ways to go about fixing it.

The easiest way to go about seeing if you have the problem is to cat the /proc/interrupts file.


[blog@web ~]$ cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3
0: 165886477 0 0 0 IO-APIC-edge timer
1: 3 0 0 0 IO-APIC-edge i8042
8: 0 0 0 0 IO-APIC-edge rtc
9: 0 0 0 0 IO-APIC-level acpi
12: 4 0 0 0 IO-APIC-edge i8042
50: 0 0 0 0 IO-APIC-level sata_nv
58: 0 0 0 0 IO-APIC-level sata_nv
82: 210 0 0 107566 PCI-MSI eth0
90: 49 0 100834 0 PCI-MSI eth1




So you are asking now what are you to be looking for, well check out the eth0 and eth1 lines. As you can see this is a 4 Core box and has all the interrupts for eth0 running on CPU3 and eth1 on CPU2. This box is not in production so the numbers are small but still shows a problem. Following post will suggest fixes to this problem and the fix that I took.