ppc32: Weird process scheduling behaviour with 2.6.24-rc
Peter Zijlstra
a.p.zijlstra at chello.nl
Mon Jan 28 23:53:16 EST 2008
On Mon, 2008-01-28 at 13:32 +0100, Ingo Molnar wrote:
> * Peter Zijlstra <a.p.zijlstra at chello.nl> wrote:
>
> > > * With CONFIG_FAIR_USER_SCHED disabled, there are severe
> > > interactivity hickups with a niced CPU hog and top running. This
> > > started with commit 810e95ccd58d91369191aa4ecc9e6d4a10d8d0c8.
> >
> > The revert at the bottom causes the wakeup granularity to shrink for +
> > nice and to grow for - nice. That is, it becomes easier to preempt a +
> > nice task, and harder to preempt a - nice task.
>
> i think it would be OK to do half of this: make it easier to preempt a
> +nice task. Michel, do you really need the -nice portion as well? It's
> not a problem to super-preempt positively reniced tasks, but it can be
> quite annoying if negatively reniced tasks have super-slices.
This should do that (unless I need a stronger cup of tea).
---
Index: linux-2.6/kernel/sched_fair.c
===================================================================
--- linux-2.6.orig/kernel/sched_fair.c
+++ linux-2.6/kernel/sched_fair.c
@@ -1106,7 +1106,11 @@ static void check_preempt_wakeup(struct
}
gran = sysctl_sched_wakeup_granularity;
- if (unlikely(se->load.weight != NICE_0_LOAD))
+ /*
+ * More easily preempt - nice tasks, while not making
+ * it harder for + nice tasks.
+ */
+ if (unlikely(se->load.weight > NICE_0_LOAD))
gran = calc_delta_fair(gran, &se->load);
if (pse->vruntime + gran < se->vruntime)
More information about the Linuxppc-dev
mailing list