[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
[dm-devel] Re: IO scheduler based IO controller V10
- From: Jens Axboe <jens axboe oracle com>
- To: Mike Galbraith <efault gmx de>
- Cc: dhaval linux vnet ibm com, peterz infradead org, dm-devel redhat com, dpshah google com, agk redhat com, balbir linux vnet ibm com, paolo valente unimore it, jmarchan redhat com, fernando oss ntt co jp, Ulrich Lukas <stellplatz-nr 13a datenparkplatz de>, mikew google com, jmoyer redhat com, nauman google com, Ingo Molnar <mingo elte hu>, Vivek Goyal <vgoyal redhat com>, m-ikeda ds jp nec com, riel redhat com, lizf cn fujitsu com, fchecconi gmail com, containers lists linux-foundation org, linux-kernel vger kernel org, akpm linux-foundation org, righi andrea gmail com, Linus Torvalds <torvalds linux-foundation org>
- Subject: [dm-devel] Re: IO scheduler based IO controller V10
- Date: Sat, 3 Oct 2009 09:24:01 +0200
On Sat, Oct 03 2009, Mike Galbraith wrote:
> On Sat, 2009-10-03 at 07:49 +0200, Mike Galbraith wrote:
> > On Fri, 2009-10-02 at 20:19 +0200, Jens Axboe wrote:
> >
> > > If you could do a cleaned up version of your overload patch based on
> > > this:
> > >
> > > http://git.kernel.dk/?p=linux-2.6-block.git;a=commit;h=1d2235152dc745c6d94bedb550fea84cffdbf768
> > >
> > > then lets take it from there.
>
> Note to self: build the darn thing after last minute changes.
>
> Block: Delay overloading of CFQ queues to improve read latency.
>
> Introduce a delay maximum dispatch timestamp, and stamp it when:
> 1. we encounter a known seeky or possibly new sync IO queue.
> 2. the current queue may go idle and we're draining async IO.
> 3. we have sync IO in flight and are servicing an async queue.
> 4 we are not the sole user of disk.
> Disallow exceeding quantum if any of these events have occurred recently.
>
> Protect this behavioral change with a "desktop_dispatch" knob and default
> it to "on".. providing an easy means of regression verification prior to
> hate-mail dispatch :) to CC list.
It still doesn't build:
block/cfq-iosched.c: In function ?cfq_dispatch_requests?:
block/cfq-iosched.c:1345: error: ?max_delay? undeclared (first use in
this function)
After shutting down the computer yesterday, I was thinking a bit about
this issue and how to solve it without incurring too much delay. If we
add a stricter control of the depth, that may help. So instead of
allowing up to max_quantum (or larger) depths, only allow gradual build
up of that the farther we get away from a dispatch from the sync IO
queues. For example, when switching to an async or seeky sync queue,
initially allow just 1 in flight. For the next round, if there still
hasn't been sync activity, allow 2, then 4, etc. If we see sync IO queue
again, immediately drop to 1.
It could tie in with (or partly replace) the overload feature. The key
to good latency and decent throughput is knowing when to allow queue
build up and when not to.
--
Jens Axboe
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]