]> git.baikalelectronics.ru Git - kernel.git/commit
sched: Fix load-balance lock-breaking
authorPeter Zijlstra <a.p.zijlstra@chello.nl>
Thu, 22 Sep 2011 13:30:18 +0000 (15:30 +0200)
committerIngo Molnar <mingo@elte.hu>
Wed, 21 Dec 2011 09:34:47 +0000 (10:34 +0100)
commit3ddc552ba3ae57a0ceeb8581dff2694621840dfd
tree605f04617dc42458025cb4341e9e6407bed8b140
parent03dbf0c96ed9bc77995680d6726a810a8a4ca344
sched: Fix load-balance lock-breaking

The current lock break relies on contention on the rq locks, something
which might never come because we've got IRQs disabled. Or will be
very likely because on anything with more than 2 cpus a synchronized
load-balance pass will very likely cause contention on the rq locks.

Also the sched_nr_migrate thing fails when it gets trapped the loops
of either the cgroup muck in load_balance_fair() or the move_tasks()
load condition.

Instead, use the new lb_flags field to propagate break/abort
conditions for all these loops and create a new loop outside the irq
disabled on the break being required.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/n/tip-tsceb6w61q0gakmsccix6xxi@git.kernel.org
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/sched/fair.c