Re: [patch] CFS scheduler, -v18

From: Mike Galbraith
Date: Tue Jul 03 2007 - 03:12:37 EST


On Mon, 2007-07-02 at 18:40 +0200, Vegard Nossum wrote:
> On 7/2/07, Ingo Molnar <mingo@xxxxxxx> wrote:
> > thx. As an initial matter, could you double-check whether your v18
> > kernel source has the patch below applied already?
> >
> > Ingo
> >
> > Index: linux/kernel/sched_fair.c
> > ===================================================================
> > --- linux.orig/kernel/sched_fair.c
> > +++ linux/kernel/sched_fair.c
> > @@ -342,8 +342,9 @@ update_stats_enqueue(struct cfs_rq *cfs_
> > s64 tmp;
> >
> > if (se->wait_runtime < 0) {
> > - tmp = (0 - se->wait_runtime) << NICE_0_SHIFT;
> > - key += (tmp * se->load.inv_weight) >> WMULT_SHIFT;
> > + tmp = -se->wait_runtime;
> > + key += (tmp * se->load.inv_weight) >>
> > + (WMULT_SHIFT - NICE_0_SHIFT);
> > } else {
> > tmp = se->wait_runtime * se->load.weight;
> > key -= tmp >> NICE_0_SHIFT;
> >
> >
>
> It does.

Hi,

This doesn't appear to be a CFS problem. I can reproduce the problem
easily in virgin 2.6.22-rc7 by starting xterm-spam at nice -1 or better.
As soon as xterm-spam can get enough CPU to keep the xterm fully busy,
it's game over, the xterm freezes. The more accurate fairness of CFS to
sleepers just tips the balance quicker. In mainline, the xterm has an
unfair advantage and maintains it indefinitely... until you tip the
scales just a wee bit, at which time it inverts.

-Mike

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