From f3ed5c1387b2e1df3a8a99b784cd252f3e0beedd Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Wed, 16 Sep 2009 08:54:45 +0200 Subject: [PATCH] --- yaml --- r: 163017 b: refs/heads/master c: 51e0304ce6e55a6e59658558916b4f74da085ff0 h: refs/heads/master i: 163015: 10db5ab3975c4da698fb024f666374fe7d090743 v: v3 --- [refs] | 2 +- trunk/kernel/sched_fair.c | 9 ++++++++- trunk/kernel/sched_features.h | 9 ++++++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index f7a2e11ba56c..4a70c4d979a3 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 59abf02644c45f1591e1374ee7bb45dc757fcb88 +refs/heads/master: 51e0304ce6e55a6e59658558916b4f74da085ff0 diff --git a/trunk/kernel/sched_fair.c b/trunk/kernel/sched_fair.c index a37f311f436e..acf16a8d934b 100644 --- a/trunk/kernel/sched_fair.c +++ b/trunk/kernel/sched_fair.c @@ -711,7 +711,7 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int initial) if (!initial) { /* sleeps upto a single latency don't count. */ - if (sched_feat(NEW_FAIR_SLEEPERS)) { + if (sched_feat(FAIR_SLEEPERS)) { unsigned long thresh = sysctl_sched_latency; /* @@ -725,6 +725,13 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int initial) task_of(se)->policy != SCHED_IDLE)) thresh = calc_delta_fair(thresh, se); + /* + * Halve their sleep time's effect, to allow + * for a gentler effect of sleepers: + */ + if (sched_feat(GENTLE_FAIR_SLEEPERS)) + thresh >>= 1; + vruntime -= thresh; } } diff --git a/trunk/kernel/sched_features.h b/trunk/kernel/sched_features.h index 70115c69c7a9..fd375675f834 100644 --- a/trunk/kernel/sched_features.h +++ b/trunk/kernel/sched_features.h @@ -3,7 +3,14 @@ * considers the task to be running during that period. This gives it * a service deficit on wakeup, allowing it to run sooner. */ -SCHED_FEAT(NEW_FAIR_SLEEPERS, 0) +SCHED_FEAT(FAIR_SLEEPERS, 1) + +/* + * Only give sleepers 50% of their service deficit. This allows + * them to run sooner, but does not allow tons of sleepers to + * rip the spread apart. + */ +SCHED_FEAT(GENTLE_FAIR_SLEEPERS, 1) /* * By not normalizing the sleep time, heavy tasks get an effective