Go to file
Neil Horman 723c41c1ef Fix min_load to pick actual min load across all objects
find_overloaded_objs() calls gather_load_stats() to get stats across
all objects to help migrate overloaded IRQ's. There is a bug in
gather_load_stats() to pick min_load across all objects when the
first object's load is 0.

Eg with 2 objects: obj1->load = 0 and obj2->load = 5000
During first iteration, info->min_load will be 0.
However during second iteration, info->min_load will be 5000.
This flaw in the logic doesn't allow IRQ's to be migrated as it
ends up picking the overloaded core as the one with min load.

Reviewed-by: Alakesh Haloi <alakeshh@amazon.com>
Signed-off-by: Vallish Vaidyeshwara <vallish@amazon.com>
Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
2017-11-15 07:33:47 -05:00
misc misc: add sample udev rule 2017-08-08 14:10:07 -04:00
ui irqbalance: Fix the compile warning. 2017-08-19 18:57:55 +08:00
.gitignore irqbalance: Misc build enhancements 2012-03-26 10:19:00 -04:00
.travis.yml Add CI 2017-02-05 17:07:26 +01:00
activate.c remove affinity_hint infrastructure 2016-04-26 14:55:55 -04:00
AUTHORS Add autotools scripts to irqbalance 2009-09-01 15:50:39 +00: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 x86/x64: Exclude devices with legacy IRQ 255 2017-06-02 09:46:54 -05:00
configure.ac Bumping release number 2017-11-13 09:26:09 -05:00
constants.h Compute load in nanoseconds 2013-02-18 14:08:57 -05:00
COPYING Adding missing configure files 2009-10-02 18:22:21 +00:00
cpumask.h fix cpulist_parse definition to match bitmap_parselist and kernel 2015-03-12 17:47:00 -04:00
cputree.c cputree: Cleanup unused variable 2017-08-08 14:39:10 -04:00
irqbalance.1 Add user interface to configuration and build, document socket API in man page 2017-01-03 08:48:42 -05:00
irqbalance.c Fix some string sizing issues 2017-08-03 08:43:24 -04:00
irqbalance.h Teach irqbalance about Intel CoD. 2017-07-11 09:21:04 -07:00
irqlist.c Fix min_load to pick actual min load across all objects 2017-11-15 07:33:47 -05:00
Makefile.am Add --without-irqbalance-ui option to configure 2017-08-03 11:49:08 -04:00
non-atomic.h initial import 2006-12-09 15:59:16 +00:00
numa.c Teach irqbalance about Intel CoD. 2017-07-11 09:21:04 -07:00
placement.c remove affinity_hint infrastructure 2016-04-26 14:55:55 -04:00
procinterrupts.c Update procinterrupts.c 2017-08-29 17:10:20 +08:00
README.md Adding Travis bagde 2017-08-04 13:32:29 +02:00
types.h Types: clean out unused variables from irq_info struct 2017-08-08 14:35:31 -04:00

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 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. However, most development discussions take place on the irqbalance mailing list, which can be subscribed to at: http://lists.infradead.org/mailman/listinfo/irqbalance

New Developers are encouraged to use this mailing list to discuss ideas and propose patches.

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