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), orignore
(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) orfalse
(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
, orcore
. - 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