Linux Performance is an important task for Linux admins. Irqbalance is a command-line tool that distributes hardware interrupts across processors to improve system performance. We will cover irqbalance service today to see why we can get better network and storage performance by enabling it.
What is irqbalance?
Irqbalance is a daemon to help balance the cpu load generated by interrupts across all of a systems cpus. Irqbalance identifies the highest volume interrupt sources, and isolates each of them to a single unique cpu, so that load is spread as much as possible over an entire processor set, while minimizing cache miss rates for irq handlers.
How irqbalance improve Linux performance?
If the irqbalance service is not running, then usually most of the interrupts (IRQs) are handled by CPU core 0 by default. We can get this from our monitoring tool. At times of even moderate load, this CPU core can become overwhelmed trying to handle the workload of every piece of hardware in the system. This may result in interrupts or interrupt-based work being missed or delayed, leading to poor network and storage performance, network packet loss, and potentially other issues.
The irqbalance service runs in the background and monitors CPU load every 10 seconds, moving interrupts to other CPU cores when a CPU's load is deemed too high. This keeps the system performing well and able to handle load placed upon it by the hardware.
How to install irqbalance?
The irqbalance service can be installed with:
yum install irqbalance
In Centos 5 and Centos 6, it can be enabled with: service irqbalance start
chkconfig irqbalance on
In Centos 7 and Centos 8, it can be enabled with: systemctl start irqbalance.service
systemctl enable irqbalance.service