Re: IO scheduler based IO controller V10

From: Jens Axboe
Date: Fri Oct 02 2009 - 14:36:09 EST


On Fri, Oct 02 2009, Mike Galbraith wrote:
> On Fri, 2009-10-02 at 20:08 +0200, Jens Axboe wrote:
> > On Thu, Oct 01 2009, Mike Galbraith wrote:
> > > max_dispatch = cfqd->cfq_quantum;
> > > if (cfq_class_idle(cfqq))
> > > max_dispatch = 1;
> > >
> > > + if (cfqd->busy_queues > 1)
> > > + cfqd->od_stamp = jiffies;
> > > +
> >
> > ->busy_queues > 1 just means that they have requests ready for dispatch,
> > not that they are dispatched.
>
> But we're not alone, somebody else is using disk. I'm trying to make
> sure we don't have someone _about_ to come back.. like a reader, so when
> there's another player, stamp to give him some time to wake up/submit
> before putting the pedal to the metal.

OK, then the check does what you want. It'll tell you that you have a
pending request, and at least one other queue has one too. And that
could dispatch right after you finish yours, depending on idling etc.
Note that this _only_ applies to queues that have requests still sitting
in CFQ, as soon as they are on the dispatch list in the block layer they
will only be counted as busy if they still have sorted IO waiting.

But that should be OK already, since I switched CFQ to dispatch single
requests a few revisions ago. So we should not run into that anymore.

--
Jens Axboe

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