sched: wakeup preempt when small overlap
authorPeter Zijlstra <a.p.zijlstra@chello.nl>
Sat, 20 Sep 2008 21:38:02 +0000 (23:38 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 1 Apr 2010 22:52:21 +0000 (15:52 -0700)
commitecfb7fb9b13c617447a7f6b5925da26798c1a8a1
tree7242d25bc9fef033284cee5d9343484f1eacb124
parentaa7659a10684907bec7c0c6887f8755767fb8dea
sched: wakeup preempt when small overlap

commit 15afe09bf496ae10c989e1a375a6b5da7bd3e16e upstream.

Lin Ming reported a 10% OLTP regression against 2.6.27-rc4.

The difference seems to come from different preemption agressiveness,
which affects the cache footprint of the workload and its effective
cache trashing.

Aggresively preempt a task if its avg overlap is very small, this should
avoid the task going to sleep and find it still running when we schedule
back to it - saving a wakeup.

Reported-by: Lin Ming <ming.m.lin@intel.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
include/linux/sched.h
kernel/sched.c
kernel/sched_fair.c
kernel/sched_features.h
kernel/sched_idletask.c
kernel/sched_rt.c