266 lines
8.7 KiB
HTML
266 lines
8.7 KiB
HTML
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<HTML><HEAD><TITLE>Man page of IRQBALANCE</TITLE>
|
|
</HEAD><BODY>
|
|
<H1>IRQBALANCE</H1>
|
|
Section: irqbalance (1)<BR>Updated: Dec 2006<BR><A HREF="#index">Index</A>
|
|
<A HREF="/cgi-bin/man/man2html">Return to Main Contents</A><HR>
|
|
|
|
<A NAME="lbAB"> </A>
|
|
<H2>NAME</H2>
|
|
|
|
irqbalance - distribute hardware interrupts across processors on a multiprocessor system
|
|
<A NAME="lbAC"> </A>
|
|
<H2>SYNOPSIS</H2>
|
|
|
|
<P>
|
|
<PRE>
|
|
<B>irqbalance</B>
|
|
</PRE>
|
|
|
|
<P>
|
|
<A NAME="lbAD"> </A>
|
|
<H2>DESCRIPTION</H2>
|
|
|
|
<P>
|
|
<P>
|
|
|
|
The purpose of <B>irqbalance</B> is to distribute hardware interrupts across
|
|
processors on a multiprocessor system in order to increase performance.
|
|
<P>
|
|
<A NAME="lbAE"> </A>
|
|
<H2>OPTIONS</H2>
|
|
|
|
<P>
|
|
<DL COMPACT>
|
|
<DT id="1"><B>-o, --oneshot</B>
|
|
|
|
<DD>
|
|
Causes irqbalance to be run once, after which the daemon exits.
|
|
<DT id="2"><DD>
|
|
<B>-d, --debug</B>
|
|
|
|
Causes irqbalance to print extra debug information. Implies --foreground.
|
|
<P>
|
|
<DT id="3"><B>-f, --foreground</B>
|
|
|
|
<DD>
|
|
Causes irqbalance to run in the foreground (without --debug).
|
|
<P>
|
|
<DT id="4"><B>-j, --journal</B>
|
|
|
|
<DD>
|
|
Enables log output optimized for systemd-journal.
|
|
<P>
|
|
<DT id="5"><B>-p, --powerthresh=<threshold></B>
|
|
|
|
<DD>
|
|
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.
|
|
<P>
|
|
<DT id="6"><B>-i, --banirq=<irqnum></B>
|
|
|
|
<DD>
|
|
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:
|
|
<B>irqbalance --banirq=43 --banirq=44</B>
|
|
|
|
<P>
|
|
<DT id="7"><B>-m, --banmod=<module_name></B>
|
|
|
|
<DD>
|
|
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 option 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:
|
|
<B>irqbalance --banmod=foo --banmod=bar</B>
|
|
|
|
<P>
|
|
<DT id="8"><B>-c, --deepestcache=<integer></B>
|
|
|
|
<DD>
|
|
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 affinity 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.
|
|
<B>irqbalance --deepestcache=2</B>
|
|
|
|
</DL>
|
|
<P>
|
|
|
|
The default value for deepestcache is 2.
|
|
<P>
|
|
<DL COMPACT>
|
|
<DT id="9"><B>-l, --policyscript=<script></B>
|
|
|
|
<DD>
|
|
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 interpreted by irqbalance. Irqbalance expects a zero
|
|
exit code from the provided utility. Recognized key=value pairs are:
|
|
<DT id="10"><I>ban=[true | false]</I>
|
|
|
|
<DD>
|
|
Directs irqbalance to exclude the passed in IRQ from balancing.
|
|
<DT id="11"><I>balance_level=[none | package | cache | core]</I>
|
|
|
|
<DD>
|
|
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.
|
|
<DT id="12"><I>numa_node=<integer></I>
|
|
|
|
<DD>
|
|
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 irqbalance to consider an interrupt
|
|
from a device to be equidistant from all nodes.
|
|
<DT id="13">Note that, if a directory is specified rather than a regular file, all files in<DD>
|
|
the directory will be considered policy scripts, and executed on adding of an
|
|
irq to a database. If such a directory is specified, scripts in the directory
|
|
must additionally exit with one of the following exit codes:
|
|
<DT id="14"><I>0</I>
|
|
|
|
<DD>
|
|
This indicates the script has a policy for the referenced irq, and that further
|
|
script processing should stop
|
|
<DT id="15"><I>1</I>
|
|
|
|
<DD>
|
|
This indicates that the script has no policy for the referenced irq, and that
|
|
script processing should continue
|
|
<DT id="16"><I>2</I>
|
|
|
|
<DD>
|
|
This indicates that an error has occurred in the script, and it should be skipped
|
|
(further processing to continue)
|
|
<P>
|
|
<DT id="17"><B>-s, --pid=<file></B>
|
|
|
|
<DD>
|
|
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. It is ignored when used with --debug or --foreground.
|
|
<DT id="18"><B>-t, --interval=<time></B>
|
|
|
|
<DD>
|
|
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.
|
|
</DL>
|
|
<A NAME="lbAF"> </A>
|
|
<H2>ENVIRONMENT VARIABLES</H2>
|
|
|
|
<DL COMPACT>
|
|
<DT id="19"><B>IRQBALANCE_ONESHOT</B>
|
|
|
|
<DD>
|
|
Same as --oneshot.
|
|
<P>
|
|
<DT id="20"><B>IRQBALANCE_DEBUG</B>
|
|
|
|
<DD>
|
|
Same as --debug.
|
|
<P>
|
|
<DT id="21"><B>IRQBALANCE_BANNED_CPUS</B>
|
|
|
|
<DD>
|
|
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.
|
|
<P>
|
|
</DL>
|
|
<A NAME="lbAG"> </A>
|
|
<H2>SIGNALS</H2>
|
|
|
|
<DL COMPACT>
|
|
<DT id="22"><B>SIGHUP</B>
|
|
|
|
<DD>
|
|
Forces a rescan of the available IRQs and system topology.
|
|
<P>
|
|
</DL>
|
|
<A NAME="lbAH"> </A>
|
|
<H2>API</H2>
|
|
|
|
irqbalance is able to communicate via socket and return it's current assignment
|
|
tree and setup, as well as set new settings based on sent values. Socket is abstract,
|
|
with a name in form of
|
|
<B>irqbalance<PID>.sock</B>
|
|
|
|
, where <PID> is the process ID of irqbalance instance to communicate with.
|
|
Possible values to send:
|
|
<DL COMPACT>
|
|
<DT id="23"><B>stats</B>
|
|
|
|
<DD>
|
|
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.
|
|
<DT id="24"><B>setup</B>
|
|
|
|
<DD>
|
|
Get the current value of sleep interval, mask of banned CPUs and list of banned IRQs.
|
|
<DT id="25"><B>settings sleep <s></B>
|
|
|
|
<DD>
|
|
Set new value of sleep interval, <s> >= 1.
|
|
<DT id="26"><B>settings cpus <cpu_number1> <cpu_number2> ...</B>
|
|
|
|
<DD>
|
|
Ban listed CPUs from IRQ handling, all old values of banned CPUs are forgotten.
|
|
<DT id="27"><B>settings ban irqs <irq1> <irq2> ...</B>
|
|
|
|
<DD>
|
|
Ban listed IRQs from being balanced, all old values of banned IRQs are forgotten.
|
|
</DL>
|
|
<P>
|
|
|
|
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.
|
|
<P>
|
|
<A NAME="lbAI"> </A>
|
|
<H2>HOMEPAGE</H2>
|
|
|
|
<A HREF="https://github.com/Irqbalance/irqbalance">https://github.com/Irqbalance/irqbalance</A>
|
|
<P>
|
|
<P>
|
|
|
|
<HR>
|
|
<A NAME="index"> </A><H2>Index</H2>
|
|
<DL>
|
|
<DT id="28"><A HREF="#lbAB">NAME</A><DD>
|
|
<DT id="29"><A HREF="#lbAC">SYNOPSIS</A><DD>
|
|
<DT id="30"><A HREF="#lbAD">DESCRIPTION</A><DD>
|
|
<DT id="31"><A HREF="#lbAE">OPTIONS</A><DD>
|
|
<DT id="32"><A HREF="#lbAF">ENVIRONMENT VARIABLES</A><DD>
|
|
<DT id="33"><A HREF="#lbAG">SIGNALS</A><DD>
|
|
<DT id="34"><A HREF="#lbAH">API</A><DD>
|
|
<DT id="35"><A HREF="#lbAI">HOMEPAGE</A><DD>
|
|
</DL>
|
|
<HR>
|
|
This document was created by
|
|
<A HREF="/cgi-bin/man/man2html">man2html</A>,
|
|
using the manual pages.<BR>
|
|
Time: 00:05:17 GMT, March 31, 2021
|
|
</BODY>
|
|
</HTML>
|