Messages in this thread Patch in this message | | | Date | Fri, 17 Oct 2008 19:27:05 +0200 | From | Peter Zijlstra <> | Subject | [PATCH 4/4] sched: fix wakeup preemption |
| |
In my recent wakeup preempt rework I messed up the asym wakeup. The idea is that it should be easier to preempt lighter tasks but not harder to preempt heavier tasks.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> --- kernel/sched_fair.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
Index: linux-2.6/kernel/sched_fair.c =================================================================== --- linux-2.6.orig/kernel/sched_fair.c +++ linux-2.6/kernel/sched_fair.c @@ -1243,8 +1243,8 @@ static unsigned long wakeup_gran(struct * More easily preempt - nice tasks, while not making it harder for * + nice tasks. */ - if (sched_feat(ASYM_GRAN)) - gran = calc_delta_mine(gran, NICE_0_LOAD, &se->load); + if (sched_feat(ASYM_GRAN) && se->load.weight < NICE_0_LOAD) + gran = (gran * se->load.weight) >> NICE_0_SHIFT; return gran; } @@ -1296,7 +1296,7 @@ static void check_preempt_wakeup(struct } delta_exec = se->sum_exec_runtime - se->prev_sum_exec_runtime; - if (delta_exec > wakeup_gran(pse)) + if (delta_exec > wakeup_gran(se)) resched_task(curr); } --
| |