diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-04-14 02:53:32 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-04-19 13:44:57 -0400 |
commit | 018d6db4cb5bbdcd65424a16f2dcca692ed32ae4 (patch) | |
tree | aee5a5ae44ba3f345c26acf91d419dae1ba6d1e1 /kernel | |
parent | 3925e6fc1f774048404fdd910b0345b06c699eb4 (diff) |
sched: re-do "sched: fix fair sleepers"
re-apply:
| commit e22ecef1d2658ba54ed7d3fdb5d60829fb434c23
| Author: Ingo Molnar <mingo@elte.hu>
| Date: Fri Mar 14 22:16:08 2008 +0100
|
| sched: fix fair sleepers
|
| Fair sleepers need to scale their latency target down by runqueue
| weight. Otherwise busy systems will gain ever larger sleep bonus.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/sched_fair.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c index 0080968d3e4a..86a93376282c 100644 --- a/kernel/sched_fair.c +++ b/kernel/sched_fair.c | |||
@@ -510,8 +510,10 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int initial) | |||
510 | 510 | ||
511 | if (!initial) { | 511 | if (!initial) { |
512 | /* sleeps upto a single latency don't count. */ | 512 | /* sleeps upto a single latency don't count. */ |
513 | if (sched_feat(NEW_FAIR_SLEEPERS)) | 513 | if (sched_feat(NEW_FAIR_SLEEPERS)) { |
514 | vruntime -= sysctl_sched_latency; | 514 | vruntime -= calc_delta_fair(sysctl_sched_latency, |
515 | &cfs_rq->load); | ||
516 | } | ||
515 | 517 | ||
516 | /* ensure we never gain time by being placed backwards. */ | 518 | /* ensure we never gain time by being placed backwards. */ |
517 | vruntime = max_vruntime(se->vruntime, vruntime); | 519 | vruntime = max_vruntime(se->vruntime, vruntime); |