IRQBALANCE(1) irqbalance IRQBALANCE(1)
NAME
irqbalance - distribute hardware interrupts across processors on a mul-
tiprocessor system
SYNOPSIS
irqbalance
DESCRIPTION
The purpose of irqbalance is to distribute hardware interrupts across
processors on a multiprocessor system in order to increase performance.
OPTIONS
-o, --oneshot
Causes irqbalance to be run once, after which the daemon exits.
-d, --debug
Causes irqbalance to print extra debug information. Implies
--foreground.
-f, --foreground
Causes irqbalance to run in the foreground (without --debug).
-j, --journal
Enables log output optimized for systemd-journal.
-p, --powerthresh=<threshold>
Set the threshold at which we attempt to move a CPU into power-
save mode If more than <threshold> CPUs are more than 1 standard
deviation below the average CPU softirq workload, and no CPUs are
more than 1 standard deviation above (and have more than 1 IRQ
assigned to them), attempt to place 1 CPU in powersave mode. In
powersave mode, a CPU will not have any IRQs balanced to it, in
an effort to prevent that CPU from waking up without need.
-i, --banirq=<irqnum>
Add the specified IRQ to the set of banned IRQs. irqbalance will
not affect the affinity of any IRQs on the banned list, allowing
them to be specified manually. This option is additive and can
be specified multiple times. For example to ban IRQs 43 and 44
from balancing, use the following command line: irqbalance
--banirq=43 --banirq=44
-m, --banmod=<module_name>
Add the specified module to the set of banned modules, similar to
--banirq. irqbalance will not affect the affinity of any IRQs of
given modules, allowing them to be specified manually. This op-
tion is additive and can be specified multiple times. For example
to ban all IRQs of module foo and module bar from balancing, use
the following command line: irqbalance --banmod=foo --banmod=bar
-c, --deepestcache=<integer>
This allows a user to specify the cache level at which irqbalance
partitions cache domains. Specifying a deeper cache may allow a
greater degree of flexibility for irqbalance to assign IRQ affin-
ity to achieve greater performance increases, but setting a cache
depth too large on some systems (specifically where all CPUs on a
system share the deepest cache level), will cause irqbalance to
see balancing as unnecessary. irqbalance --deepestcache=2
The default value for deepestcache is 2.
-l, --policyscript=<script>
When specified, the referenced script or directory will execute
once for each discovered IRQ, with the sysfs device path and IRQ
number passed as arguments. Note that the device path argument
will point to the parent directory from which the IRQ attributes
directory may be directly opened. Policy scripts specified need
to be owned and executable by the user of irqbalance process, if
a directory is specified, non-executable files will be skipped.
The script may specify zero or more key=value pairs that will
guide irqbalance in the management of that IRQ. Key=value pairs
are printed by the script on stdout and will be captured and in-
terpreted by irqbalance. Irqbalance expects a zero exit code
from the provided utility. Recognized key=value pairs are:
ban=[true | false]
Directs irqbalance to exclude the passed in IRQ from balancing.
balance_level=[none | package | cache | core]
This allows a user to override the balance level of a given IRQ.
By default the balance level is determined automatically based on
the pci device class of the device that owns the IRQ.
numa_node=<integer>
This allows a user to override the NUMA node that sysfs indicates
a given device IRQ is local to. Often, systems will not specify
this information in ACPI, and as a result devices are considered
equidistant from all NUMA nodes in a system. This option allows
for that hardware provided information to be overridden, so that
irqbalance can bias IRQ affinity for these devices toward its
most local node. Note that specifying a -1 here forces irqbal-
ance to consider an interrupt from a device to be equidistant
from all nodes.
Note that, if a directory is specified rather than a regular file, all
files in
the directory will be considered policy scripts, and executed on
adding of an irq to a database. If such a directory is speci-
fied, scripts in the directory must additionally exit with one of
the following exit codes:
0 This indicates the script has a policy for the referenced irq,
and that further script processing should stop
1 This indicates that the script has no policy for the referenced
irq, and that script processing should continue
2 This indicates that an error has occurred in the script, and it
should be skipped (further processing to continue)
--migrateval, -e <val>
Specify a minimum migration ratio to trigger a rebalancing Nor-
mally any improvement in load distribution will trigger the mi-
gration of an irq, as long as preforming the migration will not
simply move the load to a new cpu. By specifying a migration
value, the load balance improvement is subject to hysteresis de-
fined by this value, which is inversely propotional to the value.
For example, a value of 2 in this option tells irqbalance that
the improvement in load distribution must be at least 50%, a
value of 4 indicates the load distribution improvement must be at
least 25%, etc
-s, --pid=<file>
Have irqbalance write its process id to the specified file. By
default no pidfile is written. The written pidfile is automati-
cally unlinked when irqbalance exits. It is ignored when used
with --debug or --foreground.
-t, --interval=<time>
Set the measurement time for irqbalance. irqbalance will sleep
for <time> seconds between samples of the irq load on the system
cpus. Defaults to 10.
ENVIRONMENT VARIABLES
IRQBALANCE_ONESHOT
Same as --oneshot.
IRQBALANCE_DEBUG
Same as --debug.
IRQBALANCE_BANNED_CPUS
Provides a mask of CPUs which irqbalance should ignore and never
assign interrupts to. If not specified, irqbalance use mask of
isolated and adaptive-ticks CPUs on the system as the default
value. The "isolcpus=" boot parameter specifies the isolated
CPUs. The "nohz_full=" boot parameter specifies the adaptive-
ticks CPUs. By default, no CPU will be an isolated or adaptive-
ticks CPU. This is a hexmask without the leading ’0x’. On sys-
tems with large numbers of processors, each group of eight hex
digits is separated by a comma ’,’. i.e. ‘export IRQBAL-
ANCE_BANNED_CPUS=fc0‘ would prevent irqbalance from assigning
irqs to the 7th-12th cpus (cpu6-cpu11) or ‘export IRQBAL-
ANCE_BANNED_CPUS=ff000000,00000001‘ would prevent irqbalance from
assigning irqs to the 1st (cpu0) and 57th-64th cpus
(cpu56-cpu63). Notes: This environment variable will be dis-
carded, please use IRQBALANCE_BANNED_CPULIST instead. Before
deleting this environment variable, Introduce a deprecation pe-
riod first for the consider of compatibility.
IRQBALANCE_BANNED_CPULIST
Provides a cpulist which irqbalance should ignore and never as-
sign interrupts to. If not specified, irqbalance use mask of
isolated and adaptive-ticks CPUs on the system as the default
value.
SIGNALS
SIGHUP Forces a rescan of the available IRQs and system topology.
API
irqbalance is able to communicate via socket and return it's current as-
signment tree and setup, as well as set new settings based on sent val-
ues. Socket is abstract, with a name in form of irqbalance<PID>.sock ,
where <PID> is the process ID of irqbalance instance to communicate
with. Possible values to send:
stats Retrieve assignment tree of IRQs to CPUs, in recursive manner.
For each CPU node in tree, it's type, number, load and whether
the save mode is active are sent. For each assigned IRQ type,
it's number, load, number of IRQs since last rebalancing and it's
class are sent. Refer to types.h file for explanation of defines.
setup Get the current value of sleep interval, mask of banned CPUs and
list of banned IRQs.
settings sleep <s>
Set new value of sleep interval, <s> >= 1.
settings cpus <cpu_number1> <cpu_number2> ...
Ban listed CPUs from IRQ handling, all old values of banned CPUs
are forgotten.
settings ban irqs <irq1> <irq2> ...
Ban listed IRQs from being balanced, all old values of banned
IRQs are forgotten.
irqbalance checks SCM_CREDENTIALS of sender (only root user is allowed
to interact). Based on chosen tools, ancillary message with credentials
needs to be sent with request.
HOMEPAGE
https://github.com/Irqbalance/irqbalance
Linux Dec 2006 IRQBALANCE(1)
Generated by dwww version 1.16 on Tue Dec 16 06:15:09 CET 2025.