Re: [PATCH 4/4] sched: fix wakeup preemption

From: Chris Friesen
Date: Mon Oct 20 2008 - 17:57:39 EST


Peter Zijlstra wrote:

> 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.

> 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;
> }

Setting aside whether the asym wakeup is desirable, the code looks reasonable but I think you need to change the code comments as well.

The proposed code only affects with a weight of less than NICE_0_LOAD, ie. +nice tasks. The comment suggests the opposite.

Chris
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/