]> 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)
commit3a9c8915970596865dd1d81070440f0a17ff63fc
tree605f04617dc42458025cb4341e9e6407bed8b140
parent5bf8ecb0aabfcfcd44ea8584d8c22c83ecf3bf77
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