diff options
author | Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com> | 2008-01-31 16:45:22 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-01-31 16:45:22 -0500 |
commit | 296825cbe14d4c95ee9c41ca5824f7487bfb4d9d (patch) | |
tree | c1d608ee1dd774f1d726c12873feff8a29422fff /kernel/sched_fair.c | |
parent | 095031052b4c03a7c8ffa51cbab031e442c4f8b7 (diff) |
sched: fix high wake up latencies with FAIR_USER_SCHED
The reason why we are getting better wakeup latencies for
!FAIR_USER_SCHED is because of this snippet of code in place_entity():
if (!initial) {
/* sleeps upto a single latency don't count. */
if (sched_feat(NEW_FAIR_SLEEPERS) && entity_is_task(se))
^^^^^^^^^^^^^^^^^^
vruntime -= sysctl_sched_latency;
/* ensure we never gain time by being placed backwards. */
vruntime = max_vruntime(se->vruntime, vruntime);
}
NEW_FAIR_SLEEPERS feature gives credit for sleeping only to tasks and
not group-level entities. With the patch attached, I could see that
wakeup latencies with FAIR_USER_SCHED are restored to the same level as
!FAIR_USER_SCHED.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/sched_fair.c')
-rw-r--r-- | kernel/sched_fair.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c index 72e25c7a3a18..cf958aefac33 100644 --- a/kernel/sched_fair.c +++ b/kernel/sched_fair.c | |||
@@ -520,7 +520,7 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int initial) | |||
520 | 520 | ||
521 | if (!initial) { | 521 | if (!initial) { |
522 | /* sleeps upto a single latency don't count. */ | 522 | /* sleeps upto a single latency don't count. */ |
523 | if (sched_feat(NEW_FAIR_SLEEPERS) && entity_is_task(se)) | 523 | if (sched_feat(NEW_FAIR_SLEEPERS)) |
524 | vruntime -= sysctl_sched_latency; | 524 | vruntime -= sysctl_sched_latency; |
525 | 525 | ||
526 | /* ensure we never gain time by being placed backwards. */ | 526 | /* ensure we never gain time by being placed backwards. */ |