[RFC] irqbalance: Mark in-kernel irqbalance as obsolete, set to N by default




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 <auke-jan.h.kok@xxxxxxxxx>

---

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


Relevant Pages

  • Re: sync/async NdisTransferData()
    ... Let's assume that NdisTransferData() call has begun. ... and NIC driver is doing some work and is going to call ... do use DMA and still need to do their DMA transfers asynchronously. ... This is in contrast to most modern NICs, ...
    (microsoft.public.development.device.drivers)
  • Re: Is it possible to bridge three NIC on a Windows 2000 Server
    ... > Where can I get a teaming NIC driver for all those NIC cards? ... There may be an add-on driver for random NICs, ... >>> multiple NIC cards on the server, you can Send Data and Retrieve data ...
    (microsoft.public.win2000.networking)
  • Re: [PATCH] MII bus API for PHY devices
    ... if the mii bus driver uses it's own timers, ... nics will be more difficult. ... For a nic driver, ... The internal phy is partially visible on the external ...
    (Linux-Kernel)
  • Re: [SLE] eth0 now eth1 WTF? Network woes....The saga....[Long][SOLVED - Bug?]
    ... >> YaST can't help but conclude you've got two NICs. ... > some nic cards facilitate the changing of mac addresses, ... > the case and the nic driver is "faulty" ?? ... in which case YaST ought to know about it. ...
    (SuSE)