Maybe there is someone out there to do some benchmarking / testing / commenting on the changes ? The following patch adjusts the irq balancing a bit. 1) At least on my 2-CPU smp machine IRQs have been bouncing between CPUs. This seems to happen because the imbalance-value between the CPUs was noticed to be high enough for an IRQ-switch to a different CPU. After switch-over the scenario not really improved -> switch back again. Maybe the modification helps improving this a bit by implementing a "look ahead" if moving the IRQ really makes sense. 2) As far as I understand, putting all interrupts on one CPU should be preferred in case of low interrupt load. (cpu cache etc.) This patch also adds a fallback-behavior if the load of interrupts drops again. Currently I decided to add a processor variable to irq_desc structure. I´m not sure if this is the right way to go but I needed the information on which CPU an IRQ is currently on. (to decide whether an IRQ has to be switched back to the "primary CPU") 3) Now '/proc/interrupts' also shows the CPU-no the interrupt currently is routed to. (Not sure if this breaks some tools ?!?)