Go to file
Chang S. Bae b66647ab75 Prepare to handle thermal event
Intel's new hardware supports Hardware Feedback Interface to provide CPU
performance and energy efficiency information. Every update on this is
delivered via thermal event interrupt. The thermal framework in the Linux
kernel relays these notifications to userspace via a Netlink interface.

When a CPU's performance and efficiency are zero, irqbalance needs to mask
the CPU from interrupts. Introduce a new CPU mask to indicate banned CPUs
for this.

Before supporting this event handling, define functions. Their
implementation will be on the following patches.

This event is available only on x86-64 systems. And it can be subscribed
with help of Netlink libraries. So check them before building it.

Also add a new build option so users may opt out this support. Setting this
option on other systems will result in a build failure.

Signed-off-by: Chang S. Bae <chang.seok.bae@intel.com>
2022-06-15 14:52:13 -07:00
misc correct wait time in oneshot mode 2022-04-21 16:44:19 +08:00
tests Add make check targets 2018-05-14 14:14:02 -04:00
ui Separate variable declaration from assignment 2022-01-26 09:26:38 -05:00
.gitignore irqbalance: Misc build enhancements 2012-03-26 10:19:00 -04:00
.travis.yml Dump the log to the console 2018-05-14 14:27:03 -04:00
AUTHORS Add autotools scripts to irqbalance 2009-09-01 15:50:39 +00:00
COPYING Adding missing configure files 2009-10-02 18:22:21 +00:00
Makefile.am Prepare to handle thermal event 2022-06-15 14:52:13 -07:00
README.md Update README.md 2020-10-27 10:09:24 -04:00
activate.c activate_mapping: activate only online CPUs 2020-08-25 23:31:59 +02:00
autogen.sh Make sure the m4 directory is created in autogen.sh 2012-06-20 11:45:37 -04:00
bitmap.c import __bitmap_parselist from Linux kernel 2015-03-12 17:47:00 -04:00
bitmap.h import __bitmap_parselist from Linux kernel 2015-03-12 17:47:00 -04:00
classify.c irqbalance: Check validity of numa_node 2021-08-06 19:56:40 +02:00
configure.ac Prepare to handle thermal event 2022-06-15 14:52:13 -07:00
constants.h Remove some unused constant macros in constants.h 2020-11-25 23:57:04 +08:00
cpumask.h Add the cpus_copy() helper 2022-05-17 11:44:57 -07:00
cputree.c Prepare to handle thermal event 2022-06-15 14:52:13 -07:00
irqbalance-ui.1 Add stub manpage for irqbalance-ui 2019-07-21 12:15:14 +02:00
irqbalance.1 Document migrateval 2022-04-07 08:26:15 -04:00
irqbalance.c Prepare to handle thermal event 2022-06-15 14:52:13 -07:00
irqbalance.h Add hot pull method for irqbalance 2021-01-04 12:34:02 +08:00
irqlist.c fix unsigned integer subtraction sign overflow 2021-08-24 20:50:18 +08:00
non-atomic.h initial import 2006-12-09 15:59:16 +00:00
numa.c irqbalance: use add_one_node() to create unspecified node for numa 2019-11-07 10:58:13 +08:00
placement.c irqbalance: use NUMA_NO_NODE macro instead of -1 for numa 2019-11-03 22:12:36 +08:00
procinterrupts.c fix opendir fails in check_platform_device 2021-08-23 19:40:41 +08:00
thermal.c Prepare to handle thermal event 2022-06-15 14:52:13 -07:00
thermal.h Prepare to handle thermal event 2022-06-15 14:52:13 -07:00
types.h Add hot pull method for irqbalance 2021-01-04 12:34:02 +08:00

README.md

What is Irqbalance

Irqbalance is a daemon to help balance the cpu load generated by interrupts across all of a systems cpus. Irqbalance identifies the highest volume interrupt sources, and isolates each of them to a single unique cpu, so that load is spread as much as possible over an entire processor set, while minimizing cache miss rates for irq handlers.

Building and Installing Build Status

./autogen.sh
./configure [options]
make
make install

Developing Irqbalance

Irqbalance is currently hosted on github, and so developers are welcome to use the issue/pull request/etc infrastructure found there.

Bug reporting

When something goes wrong, feel free to send us bugreport by one of the ways described above. Your report should include:

  • Irqbalance version you've been using (or commit hash)
  • /proc/interrupts output
  • irqbalance --debug output
  • content of smp_affinity files - can be obtained by e.g.: $ for i in $(seq 0 300); do grep . /proc/irq/$i/smp_affinity /dev/null 2>/dev/null; done
  • your hw hierarchy - e.g. lstopo-no-graphics output