1IRQBALANCE(1) irqbalance IRQBALANCE(1)
2
3
4
6 irqbalance - distribute hardware interrupts across processors on a mul‐
7 tiprocessor system
8
10 irqbalance
11
12
14 The purpose of irqbalance is to distribute hardware interrupts across
15 processors on a multiprocessor system in order to increase performance.
16
17
19 -o, --oneshot
20 Causes irqbalance to be run once, after which the daemon exits.
21
22
23 -d, --debug
24 Causes irqbalance to print extra debug information. Implies
25 --foreground.
26
27
28 -f, --foreground
29 Causes irqbalance to run in the foreground (without --debug).
30
31
32 -j, --journal
33 Enables log output optimized for systemd-journal.
34
35
36 -p, --powerthresh=<threshold>
37 Set the threshold at which we attempt to move a CPU into power‐
38 save mode If more than <threshold> CPUs are more than 1 standard
39 deviation below the average CPU softirq workload, and no CPUs
40 are more than 1 standard deviation above (and have more than 1
41 IRQ assigned to them), attempt to place 1 CPU in powersave mode.
42 In powersave mode, a CPU will not have any IRQs balanced to it,
43 in an effort to prevent that CPU from waking up without need.
44
45
46 -i, --banirq=<irqnum>
47 Add the specified IRQ to the set of banned IRQs. irqbalance will
48 not affect the affinity of any IRQs on the banned list, allowing
49 them to be specified manually. This option is addative and can
50 be specified multiple times. For example to ban IRQs 43 and 44
51 from balancing, use the following command line: irqbalance
52 --banirq=43 --banirq=44
53
54
55 --deepestcache=<integer>
56 This allows a user to specify the cache level at which irqbal‐
57 ance partitions cache domains. Specifying a deeper cache may
58 allow a greater degree of flexibility for irqbalance to assign
59 IRQ affinity to achieve greater performance increases, but set‐
60 ting a cache depth too large on some systems (specifically where
61 all CPUs on a system share the deepest cache level), will cause
62 irqbalance to see balancing as unnecessary. irqbalance --deep‐
63 estcache=2
64
65 The default value for deepestcache is 2.
66
67
68 -l, --policyscript=<script>
69 When specified, the referenced script will execute once for each
70 discovered IRQ, with the sysfs device path and IRQ number passed
71 as arguments. Note that the device path argument will point to
72 the parent directory from which the IRQ attributes directory may
73 be directly opened. The script may specify zero or more
74 key=value pairs that will guide irqbalance in the management of
75 that IRQ. Key=value pairs are printed by the script on stdout
76 and will be captured and interpreted by irqbalance. Irqbalance
77 expects a zero exit code from the provided utility. Recognized
78 key=value pairs are:
79
80 ban=[true | false]
81
82 Directs irqbalance to exclude the passed in IRQ from balancing.
83
84 balance_level=[none | package | cache | core]
85 This allows a user to override the balance level of a given IRQ.
86 By default the balance level is determined automatically based
87 on the pci device class of the device that owns the IRQ.
88
89 numa_node=<integer>
90 This allows a user to override the NUMA node that sysfs indi‐
91 cates a given device IRQ is local to. Often, systems will not
92 specify this information in ACPI, and as a result devices are
93 considered equidistant from all NUMA nodes in a system. This
94 option allows for that hardware provided information to be over‐
95 ridden, so that irqbalance can bias IRQ affinity for these
96 devices toward its most local node. Note that specifying a -1
97 here forces irqbalance to consider an interrupt from a device to
98 be equidistant from all nodes.
99
100 -s, --pid=<file>
101 Have irqbalance write its process id to the specified file. By
102 default no pidfile is written. The written pidfile is automati‐
103 cally unlinked when irqbalance exits. It is ignored when used
104 with --debug or --foreground.
105
106 -t, --interval=<time>
107 Set the measurement time for irqbalance. irqbalance will sleep
108 for <time> seconds between samples of the irq load on the system
109 cpus. Defaults to 10.
110
112 IRQBALANCE_ONESHOT
113 Same as --oneshot.
114
115
116 IRQBALANCE_DEBUG
117 Same as --debug.
118
119
120 IRQBALANCE_BANNED_CPUS
121 Provides a mask of CPUs which irqbalance should ignore and never
122 assign interrupts to.
123
124
126 SIGHUP Forces a rescan of the available IRQs and system topology.
127
128
130 irqbalance is able to communicate via socket and return it's current
131 assignment tree and setup, as well as set new settings based on sent
132 values. Socket is abstract, with a name in form of irqbalance<PID>.sock
133 , where <PID> is the process ID of irqbalance instance to communicate
134 with. Possible values to send:
135
136 stats Retrieve assignment tree of IRQs to CPUs, in recursive manner.
137 For each CPU node in tree, it's type, number, load and whether
138 the save mode is active are sent. For each assigned IRQ type,
139 it's number, load, number of IRQs since last rebalancing and
140 it's class are sent. Refer to types.h file for explanation of
141 defines.
142
143 setup Get the current value of sleep interval, mask of banned CPUs and
144 and list of banned IRQs.
145
146 settings sleep <s>
147 Set new value of sleep interval, <s> >= 1.
148
149 settings cpus <cpu_number1> <cpu_number2> ...
150 Ban listed CPUs from IRQ handling, all old values of banned CPUs
151 are forgotten.
152
153 settings ban irqs <irq1> <irq2> ...
154 Ban listed IRQs from being balanced, all old values of banned
155 IRQs are forgotten.
156
157 irqbalance checks SCM_CREDENTIALS of sender (only root user is allowed
158 to interact). Based on chosen tools, ancillary message with creden‐
159 tials needs to be sent with request.
160
161
163 https://github.com/Irqbalance/irqbalance
164
165
166
167
168Linux Dec 2006 IRQBALANCE(1)