[PATCH] sched: run SCHED_NORMAL tasks with real time tasks on SMT siblings
authorCon Kolivas <kernel@kolivas.org>
Sat, 10 Sep 2005 07:26:08 +0000 (00:26 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Sat, 10 Sep 2005 17:06:22 +0000 (10:06 -0700)
commitfc38ed7531eefa332c8c69ee288487860cd6b426
treed358d26559cc33c5d4ef2ed2f9cef8cf2b8ed3ae
parenta7482a2e7775d163aecd8c95af7bb1b8c83890cc
[PATCH] sched: run SCHED_NORMAL tasks with real time tasks on SMT siblings

The hyperthread aware nice handling currently puts to sleep any non real
time task when a real time task is running on its sibling cpu.  This can
lead to prolonged starvation by having the non real time task pegged to the
cpu with load balancing not pulling that task away.

Currently we force lower priority hyperthread tasks to run a percentage of
time difference based on timeslice differences which is meaningless when
comparing real time tasks to SCHED_NORMAL tasks.  We can allow non real
time tasks to run with real time tasks on the sibling up to per_cpu_gain%
if we use jiffies as a counter.

Cleanups and micro-optimisations to the relevant code section should make
it more understandable as well.

Signed-off-by: Con Kolivas <kernel@kolivas.org>
Acked-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
kernel/sched.c