irqbalance
distribute hardware interrupts across processors on a multiprocessor system
Synopsis
irqbalance
add an example, a script, a trick and tips
examples
source
insmod nvme.ko
irqbalance -o -h exact
sh run_fio -m read
modprobe -r nvme
description
The purpose of
irqbalance is distribute hardware interrupts across
processors on a multiprocessor system in order to increase
performance.
options
--oneshot
Causes irqbalance to be run
once, after which the daemon exits
--debug
Causes irqbalance to print
extra debug information. Implies --foreground
--foreground
Causes irqbalance to run in the
foreground (without --debug)
--hintpolicy=[exact | subset
| ignore]
Set the policy for how irq
kernel affinity hinting is treated. Can be one of:
exact
irq affinity hint is applied unilaterally and never
violated
subset
irq is balanced, but the assigned object will be a subset of
the affintiy hint
ignore
irq affinity hint value is completely ignored
--powerthresh=<threshold>
Set the threshold at which we
attempt to move a cpu into powersave 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.
--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 addative 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
--banscript=<script>
Execute the specified script
for each irq that is discovered, passing the sysfs path to
the associated device as the first argument, and the irq
vector as the second. An exit value of 0 tells irqbalance
that this interrupt should balanced and managed as a normal
irq, while a non-zero exit code indicates this irq should be
ignored by irqbalance completely (see --banirq above). Use
of this script provides users the ability to dynamically
select which irqs get exluded from balancing, and provides
an opportunity for manual affinity setting in one single
code point. NOTE: The banscript option is deprecated.
Please use the --polscript option instead
--policyscript=<script>
An superset of the
functionality found in the --banscript option. When
specified, the referenced script will execute once for each
discovered irq The script may specify zero or more key=value
pairs that will guide irqbalance in the management of that
irq. The script will be passed the path to the sysfs device
that owns the irq and the irq number itself as the first and
second arguments. Key=value pairs are printed by the script
on stdout, and will be captured and interpreted 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.
--pid=<file>
Have irqbalance write its
process id to the specified file. By default no pidfile is
written. The written pidfile is automatically unlinked when
irqbalance exits.
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
homepage
http://code.google.com/p/irqbalance
sighup
Forces a rescan of the available irqs and system topology
signals