Re: [PATCH] Time sliced CFQ #2

Jens Axboe
2004-12-05T18:58:53Z

On Sat, Dec 04 2004, Jeff Sipek wrote:
> On Sat, Dec 04, 2004 at 11:49:21AM +0100, Jens Axboe wrote:
> > Hi,
> >
> > Second version of the time sliced CFQ. Changes:
> >
> > - Sync io has a fixed time slice like before, async io has both a time
> > based and a request based slice limit. The queue slice is expired when
> > one of these limits are reached.
> >
> > - Fix a bug in invoking the request handler on a plugged queue.
> >
> > - Drop the ->alloc_limit wakeup stuff, I'm not so sure it's a good idea
> > and there are probably wakeup races buried there.
> >
> > With the async rq slice limit, it behaves perfectly here for me with
> > readers competing with async writers. The main slice settings for a
> > queue are:
> >
> > - slice_sync: How many msec a sync disk slice lasts
> > - slice_idle: How long a sync slice is allowed to idle
> > - slice_async: How many msec an async disk slice lasts
> > - slice_async_rq: How many requests an async disk slice lasts
>
> This looks very nice. And from your previous post (with version #1) it
> would look like you made my attempt at io priorities easier. We'll see
> ;-)

It should be really easy to try some rudimentary prio io support - just
scale the time slice based on process priority. A few lines of code
change, and io priority now follows process cpu scheduler priority. To
work really well, the code probably needs a few more limits besides just
slice time.

--
Jens Axboe