723c41c1ef
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> |
||
---|---|---|
misc | ||
ui | ||
.gitignore | ||
.travis.yml | ||
activate.c | ||
AUTHORS | ||
autogen.sh | ||
bitmap.c | ||
bitmap.h | ||
classify.c | ||
configure.ac | ||
constants.h | ||
COPYING | ||
cpumask.h | ||
cputree.c | ||
irqbalance.1 | ||
irqbalance.c | ||
irqbalance.h | ||
irqlist.c | ||
Makefile.am | ||
non-atomic.h | ||
numa.c | ||
placement.c | ||
procinterrupts.c | ||
README.md | ||
types.h |
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
./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
outputirqbalance --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