aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/sched.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2008-03-15 17:10:34 +0100
committerIngo Molnar <mingo@elte.hu>2008-03-19 04:27:53 +0100
commitf540a6080a092e2ab69fd146c308022db7347b0a (patch)
tree12dda1ecd63adb17cf06db61712a113cf6990037 /kernel/sched.c
parentsched: improve affine wakeups (diff)
downloadlinux-dev-f540a6080a092e2ab69fd146c308022db7347b0a.tar.xz
linux-dev-f540a6080a092e2ab69fd146c308022db7347b0a.zip
sched: wakeup-buddy tasks are cache-hot
Wakeup-buddy tasks are cache-hot - this makes it a bit harder for the load-balancer to tear them apart. (but it's still possible, if the load is sufficiently assymetric) Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/sched.c')
-rw-r--r--kernel/sched.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/kernel/sched.c b/kernel/sched.c
index adbd475cfd25..3f7c5eb254e2 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -1396,6 +1396,12 @@ task_hot(struct task_struct *p, u64 now, struct sched_domain *sd)
{
s64 delta;
+ /*
+ * Buddy candidates are cache hot:
+ */
+ if (&p->se == cfs_rq_of(&p->se)->next)
+ return 1;
+
if (p->sched_class != &fair_sched_class)
return 0;