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 - justscale the time slice based on process priority. A few lines of codechange, and io priority now follows process cpu scheduler priority. Towork really well, the code probably needs a few more limits besides justslice time.