0

I had a problem with CPU7 overload. I found that it was caused by the eth0 interrupts, as you can see on below cat /proc/interrupts. I'm using 2.6.35.2 kernel and Quad-Core AMD Opteron(tm) Processor 2354. I would like that interrupt were supported by all cores so I've tried to echo ff > /proc/irq/16/smp_affinity but it's not working. If I set 1, 2, 4, 8, 16 etc. it works for each core but not for several. I also have other servers where smp_affinity is set to "ff" and it works, but these machines runs on intel.

           CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7
  0:        126          0          0          0          0          0          0          0   IO-APIC-edge      timer
  1:          0          0          0          0          0          0          0          8   IO-APIC-edge      i8042
  9:          0          0          0          0          0          0          0          0   IO-APIC-fasteoi   acpi
 10:          0          0          0          0          0          0          0          2   IO-APIC-fasteoi   ehci_hcd:usb1, ohci_hcd:usb2, ohci_hcd:usb3
 11:          0          0          0          0          0          0          0          0   IO-APIC-fasteoi   sata_svw
 14:          0          0          0          0          0          0          0         44   IO-APIC-edge      ide0
 16:     523739      38196      20957    1288960      40051      33985      99858   12142246   IO-APIC-fasteoi   eth0
 28:      33784          0          1         24          0          4       1017     199001   IO-APIC-fasteoi   megasas
NMI:          0          0          0          0          0          0          0          0   Non-maskable interrupts
LOC:   51149605   52755152   47000502   38164758   47335488   49653390   44361349   19201949   Local timer interrupts
SPU:          0          0          0          0          0          0          0          0   Spurious interrupts
PMI:          0          0          0          0          0          0          0          0   Performance monitoring interrupts
PND:          0          0          0          0          0          0          0          0   Performance pending work
RES:   29252262   26917272   17461908    9927632   26959155   24081482   15451952    5680615   Rescheduling interrupts
CAL:      86814        186        188        177       9656        176        169        176   Function call interrupts
TLB:      13134      52049      17599      15275       9937      18316      15062       9433   TLB shootdowns
ERR:          0
MIS:          0

Best regards, Andrew

Andrew
  • 1

1 Answers1

0

Well, smp_affinity is a bitmask. Since the binary representations of your numbers are

1:  0000 0001
2:  0000 0010
4:  0000 0100
8:  0000 1000
16: 0001 0000

you've obviously chosen the wrong values. If "ff" is not working, try using "7" which should set the bitmask to allow interrupt processing by CPUs 0-2. Otherwise define "not working" and post the result of cat /proc/irq/16/smp_affinity

You might also read this blog article which is describing SMP affinity in more detail.

the-wabbit
  • 40,737
  • 13
  • 111
  • 174