From: Jens Axboe <axboe@suse.de>
To: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: Andrew Morton <akpm@osdl.org>, Andrea Arcangeli <andrea@suse.de>,
linux-kernel@vger.kernel.org
Subject: Re: Time sliced CFQ io scheduler
Date: Wed, 8 Dec 2004 08:20:52 +0100 [thread overview]
Message-ID: <20041208072052.GC19522@suse.de> (raw)
In-Reply-To: <1102490086.8095.63.camel@npiggin-nld.site>
On Wed, Dec 08 2004, Nick Piggin wrote:
> On Wed, 2004-12-08 at 07:58 +0100, Jens Axboe wrote:
> > On Wed, Dec 08 2004, Nick Piggin wrote:
> > > On Tue, 2004-12-07 at 18:25 -0800, Andrew Morton wrote:
>
> > > I think we could detect when a disk asks for more than, say, 4
> > > concurrent requests, and in that case turn off read anticipation
> > > and all the anti-starvation for TCQ by default (with the option
> > > to force it back on).
> >
> > CFQ only allows a certain depth a the hardware level, you can control
> > that. I don't think you should drop the AS behaviour in that case, you
> > should look at when the last request comes in and what type it is.
> >
> > With time sliced cfq I'm seeing some silly SCSI disk behaviour as well,
> > it gets harder to get good read bandwidth as the disk is trying pretty
> > hard to starve me. Maybe killing write back caching would help, I'll
> > have to try.
> >
>
> I "fixed" this in AS. It gets (or got, last time we checked, many months
> ago) pretty good read latency even with a big write and a very large
> tag depth.
>
> What were the main things I had to do... hmm, I think the main one was
> to not start on a new batch until all requests from a previous batch
> are reported to have completed. So eg. you get all reads completing
> before you start issuing any more writes. The write->read side of things
> isn't so clear cut with your "smart" write caches on the IO systems, but
> no doubt that helps a bit.
I can see the read/write batching being helpful there, at least to
prevent writes starving reads if you let the queue drain completely
before starting a new batch.
CFQ does something similar, just not batched together. But it does let
the depth build up a little and drain out. In fact I think I'm missing
a little fix there thinking about it, that could be why the read
latencies hurt on write intensive loads (the dispatch queue is drained,
the hardware queue is not fully).
> Of course, after you do all that your database performance has well and
> truly gone down the shitter. It is also hampered by the more fundamental
> issue that read anticipating can block up the pipe for IO that is cached
> on the controller/disks and would get satisfied immediately.
I think we need to end up with something that sets the machine profile
for the interesting disks. Some things you can check for at runtime
(like the writes being extremely fast is a good indicator of write
caching), but it is just not possible to cover it all. Plus, you end up
with 30-40% of the code being convoluted stuff added to detect it.
--
Jens Axboe
next prev parent reply other threads:[~2004-12-08 7:23 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-12-02 13:04 Time sliced CFQ io scheduler Jens Axboe
2004-12-02 13:48 ` Jens Axboe
2004-12-02 19:48 ` Andrew Morton
2004-12-02 19:52 ` Jens Axboe
2004-12-02 20:19 ` Andrew Morton
2004-12-02 20:19 ` Jens Axboe
2004-12-02 20:34 ` Andrew Morton
2004-12-02 20:37 ` Jens Axboe
2004-12-07 23:11 ` Nick Piggin
2004-12-02 22:18 ` Prakash K. Cheemplavam
2004-12-03 7:01 ` Jens Axboe
2004-12-03 9:12 ` Prakash K. Cheemplavam
2004-12-03 9:18 ` Jens Axboe
2004-12-03 9:35 ` Prakash K. Cheemplavam
2004-12-03 9:43 ` Jens Axboe
2004-12-03 9:26 ` Andrew Morton
2004-12-03 9:34 ` Prakash K. Cheemplavam
2004-12-03 9:39 ` Jens Axboe
2004-12-03 9:54 ` Prakash K. Cheemplavam
[not found] ` <41B03722.5090001@gmx.de>
2004-12-03 10:31 ` Jens Axboe
2004-12-03 10:38 ` Jens Axboe
2004-12-03 10:45 ` Prakash K. Cheemplavam
2004-12-03 10:48 ` Jens Axboe
2004-12-03 11:27 ` Prakash K. Cheemplavam
2004-12-03 11:29 ` Jens Axboe
2004-12-03 11:52 ` Prakash K. Cheemplavam
2004-12-08 0:37 ` Andrea Arcangeli
2004-12-08 0:54 ` Nick Piggin
2004-12-08 1:37 ` Andrea Arcangeli
2004-12-08 1:47 ` Nick Piggin
2004-12-08 2:09 ` Andrea Arcangeli
2004-12-08 2:11 ` Andrew Morton
2004-12-08 2:22 ` Andrea Arcangeli
2004-12-08 6:52 ` Jens Axboe
2004-12-08 2:00 ` Andrew Morton
2004-12-08 2:08 ` Andrew Morton
2004-12-08 6:55 ` Jens Axboe
2004-12-08 2:20 ` Andrea Arcangeli
2004-12-08 2:25 ` Andrew Morton
2004-12-08 2:33 ` Andrea Arcangeli
2004-12-08 2:33 ` Nick Piggin
2004-12-08 2:51 ` Andrea Arcangeli
2004-12-08 3:02 ` Nick Piggin
2004-12-08 6:58 ` Jens Axboe
2004-12-08 7:14 ` Nick Piggin
2004-12-08 7:20 ` Jens Axboe [this message]
2004-12-08 7:29 ` Nick Piggin
2004-12-08 7:32 ` Jens Axboe
2004-12-08 7:30 ` Andrew Morton
2004-12-08 7:36 ` Jens Axboe
2004-12-08 13:48 ` Jens Axboe
2004-12-08 6:55 ` Jens Axboe
2004-12-08 7:08 ` Nick Piggin
2004-12-08 7:11 ` Jens Axboe
2004-12-08 7:19 ` Nick Piggin
2004-12-08 7:26 ` Jens Axboe
2004-12-08 9:35 ` Jens Axboe
2004-12-08 10:08 ` Jens Axboe
2004-12-08 12:47 ` Jens Axboe
2004-12-08 10:52 ` Helge Hafting
2004-12-08 10:49 ` Jens Axboe
2004-12-08 6:49 ` Jens Axboe
2004-12-02 14:28 ` Giuliano Pochini
2004-12-02 14:41 ` Jens Axboe
2004-12-04 13:05 ` Giuliano Pochini
-- strict thread matches above, loose matches on Subject: below --
2004-12-03 20:52 Chuck Ebbert
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20041208072052.GC19522@suse.de \
--to=axboe@suse.de \
--cc=akpm@osdl.org \
--cc=andrea@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=nickpiggin@yahoo.com.au \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox