Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

3.4. irqbalance

irqbalance is a command line tool that distributes hardware interrupts across processors to improve system performance. It runs as a daemon by default, but can be run once only with the --oneshot option.
The following parameters are useful for improving performance.
--powerthresh
Sets the number of CPUs that can idle before a CPU is placed into powersave mode. If more CPUs than the threshold are more than 1 standard deviation below the average softirq workload and no CPUs are more than one standard deviation above the average, and have more than one irq assigned to them, a CPU is placed into powersave mode. In powersave mode, a CPU is not part of irq balancing so that it is not woken unnecessarily.
--hintpolicy
Determines how irq kernel affinity hinting is handled. Valid values are exact (irq affinity hint is always applied), subset (irq is balanced, but the assigned object is a subset of the affinity hint), or ignore (irq affinity hint is ignored completely).
--policyscript
Defines the location of a script to execute for each interrupt request, with the device path and irq number passed as arguments, and a zero exit code expected by irqbalance. The script defined can specify zero or more key value pairs to guide irqbalance in managing the passed irq.
The following are recognized as valid key value pairs.
ban
Valid values are true (exclude the passed irq from balancing) or false (perform balancing on this irq).
balance_level
Allows user override of the balance level of the passed irq. By default the balance level is based on the PCI device class of the device that owns the irq. Valid values are none, package, cache, or core.
numa_node
Allows user override of the NUMA node that is considered local to the passed irq. If information about the local node is not specified in ACPI, devices are considered equidistant from all nodes. Valid values are integers (starting from 0) that identify a specific NUMA node, and -1, which specifies that an irq should be considered equidistant from all nodes.
--banirq
The interrupt with the specified interrupt request number is added to the list of banned interrupts.
You can also use the IRQBALANCE_BANNED_CPUS environment variable to specify a mask of CPUs that are ignored by irqbalance.
For further details, see the man page:
$ man irqbalance