Subject: [BUG] linux-2.6.28-rc3 regression: IRQ smp_affinities not respected

From: Eric Dumazet <[email-masked]>
Date: Wed, 05 Nov 2008 07:33:21 +0100

Hi all

One more problem it seems on 2.6.28-rc3

I wanted to get maximal throughput from my machine on a network bench with 3 Gigabit
links delivering 600.000 packets per second, so I tried to play with smp_affinity to
dedicate one CPU for each NIC.

It worked with 2.6.27, so there is a regression on this part.

Unfortunatly, git bisect is nearly impossible for me as after two steps
the resulting kernel doesnt event boot on this machine (same for oprofile
regression I mentioned earlier)

# grep eth1 /proc/interrupts
 45:      20425      20418      20445      20441      20345      20349      20384      20397   PCI-MSI-edge      eth1
# cat /proc/irq/45/smp_affinity
ff
# echo 1 >/proc/irq/45/smp_affinity
# cat /proc/irq/45/smp_affinity
01
# grep eth1 /proc/interrupts
 45:      20928      20920      20943      20940      20845      20847      20887      20898   PCI-MSI-edge      eth1
# grep eth1 /proc/interrupts
 45:      21037      21030      21053      21049      20953      20956      20997      21007   PCI-MSI-edge      eth1
# grep eth1 /proc/interrupts
 45:      21141      21134      21156      21154      21057      21059      21101      21110   PCI-MSI-edge      eth1

You can see interrupts keep being spreaded on all CPUS instead of CPU0 only.

That *kills* performance on high end routers and servers.

07:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5708S Gigabit Ethernet (rev 12)
        Subsystem: Hewlett-Packard Company NC373i Integrated Multifunction Gigabit Server Adapter
        Flags: bus master, 66Mhz, medium devsel, latency 64, IRQ 45
        Memory at fa000000 (64-bit, non-prefetchable) [size=32M]
        [virtual] Expansion ROM at d1000000 [disabled] [size=16K]
        Capabilities: [40] PCI-X non-bridge device.
        Capabilities: [48] Power Management version 2
        Capabilities: [50] Vital Product Data
        Capabilities: [58] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable+

bnx2 driver

Thanks