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>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>

+4 -2
+4 -2
kernel/sched_fair.c
··· 528 529 if (!initial) { 530 /* sleeps upto a single latency don't count. */ 531 - if (sched_feat(NEW_FAIR_SLEEPERS)) 532 - vruntime -= sysctl_sched_latency; 533 534 /* ensure we never gain time by being placed backwards. */ 535 vruntime = max_vruntime(se->vruntime, vruntime);
··· 528 529 if (!initial) { 530 /* sleeps upto a single latency don't count. */ 531 + if (sched_feat(NEW_FAIR_SLEEPERS)) { 532 + vruntime -= calc_delta_fair(sysctl_sched_latency, 533 + &cfs_rq->load); 534 + } 535 536 /* ensure we never gain time by being placed backwards. */ 537 vruntime = max_vruntime(se->vruntime, vruntime);