We've recently seen a number of user bug reports against e1000 that the in-kernel irqbalance code is detrimental to network latency. The algorithm keeps swapping irq's for NICs from cpu to cpu causing extremely high network latency (>1000ms). Another NIC driver (cxgb) already has severe warnings in their documentation file against using CONFIG_IRQBALANCE, but this is a general problem for all NIC drivers and other subsystems. This is especially so with cpufreq scaling where the system is slowed down and the migrations take much longer.
I suggest that the in-kernel irqbalance is phased out, by marking it OBSOLETE first and (perhaps) removing the code later. The userspace irqbalance daemon written by Arjan van de Ven does a wonderful job and should be used instead.
Signed-off-by: Auke Kok <[EMAIL PROTECTED]> --- Kconfig | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) ---
diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig index daa75ce..5a40cfe 100644 --- a/arch/i386/Kconfig +++ b/arch/i386/Kconfig @@ -690,12 +690,19 @@ config EFI kernel should continue to boot on existing non-EFI platforms. config IRQBALANCE - bool "Enable kernel irq balancing" + bool "Enable kernel irq balancing (obsolete)" depends on SMP && X86_IO_APIC - default y + default n help - The default yes will allow the kernel to do irq load balancing. - Saying no will keep the kernel from doing irq load balancing. + The kernel irq balance will migrate interrupts between cpu's + constantly, which may help reduce load in some cases. It is not + beneficial for latency however, and a user-space daemon is available + that does a much better job. + + The default no will keep the kernel from doing irq load balancing. + Say yes will allow the kernel to do irq load balancing. + + If unsure, say N. # turning this on wastes a bunch of space. # Summit needs it only when NUMA is on