aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/sched_fair.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2008-04-14 02:53:32 -0400
committerIngo Molnar <mingo@elte.hu>2008-04-19 13:44:57 -0400
commit018d6db4cb5bbdcd65424a16f2dcca692ed32ae4 (patch)
treeaee5a5ae44ba3f345c26acf91d419dae1ba6d1e1 /kernel/sched_fair.c
parent3925e6fc1f774048404fdd910b0345b06c699eb4 (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/sched_fair.c')
-rw-r--r--kernel/sched_fair.c6
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);