From: Jens Axboe <axboe@suse.de>
To: Jamie Lokier <jamie@shareable.org>
Cc: Jeff Garzik <jgarzik@pobox.com>,
Nick Piggin <nickpiggin@yahoo.com.au>,
linux-ide@vger.kernel.org,
Linux Kernel <linux-kernel@vger.kernel.org>,
Andrew Morton <akpm@osdl.org>
Subject: Re: [PATCH] speed up SATA
Date: Sun, 28 Mar 2004 20:15:03 +0200 [thread overview]
Message-ID: <20040328181502.GO24370@suse.de> (raw)
In-Reply-To: <20040328180809.GB1087@mail.shareable.org>
On Sun, Mar 28 2004, Jamie Lokier wrote:
> Jens Axboe wrote:
> > Sorry, but I cannot disagree more. You think an artificial limit at
> > the block layer is better than one imposed at the driver end, which
> > actually has a lot more of an understanding of what hardware it is
> > driving? This makes zero sense to me. Take floppy.c for instance, I
> > really don't want 1MB requests there, since that would take a minute
> > to complete. And I might not want 1MB requests on my Super-ZXY
> > storage, because that beast completes io easily at an iorate of
> > 200MB/sec.
>
> The driver doesn't know how fast the drive is either.
>
> Without timing the drive, interface, and for different request sizes,
> neither the block layer _nor_ the driver know a suitable size.
The driver may not know exactly, but it does know a ball park figure.
You know if you are driving floppy (sucky transfer and latency), hard
drive, cdrom (decent transfer, sucky seeks), etc.
> > I absolutely refuse to put a global block layer 'optimal io
> > size' restriction in, since that is the ugliest of policies and
> > without having _any_ knowledge of what the hardware can do.
>
> But the driver doesn't have _any_ knowledge of what the I/O scheduler
> wants. 1MB requests may be a cut-off above which there is negligable
It's not what the io scheduler wants, it's what you can provide at a
reasonable latency. You cannot preempt that unit of io.
> throughput gain for SATA, but those requests may be _far_ too large
> for a low-latency I/O scheduling requirement.
>
> If we have a high-level latency scheduling constraint that userspace
> should be able to issue a read and get the result within 50ms, or that
> the average latency for reads should be <500ms, how does the SATA
> driver limiting requests to 1MB help? It depends on the attached drive.
Yep it sure does, but try and find a drive attached to a SATA controller
that cannot do 40MiB/sec (or something like that). Storage doesn't move
_that_ fast, you can keep up.
> The fundamental problem here is that neither the driver nor the block
> layer have all the information needed to select optimal or maximum
> request sizes. That can only be found by timing the device, perhaps
> every time a request is made, and adjusting the I/O scheduling and
> request splitting parameters according to that timing and high-level
> latency requirements.
I agree with that, completely. And I still maintain that putting the
restriction blindly into the hands of the block layer is not a good
idea. The driver may not know completely what storage is attached to it,
but it can peek and poke and get a general idea. As it stands right now,
the block layer has _zero_ knowledge. Unless you start adding timing and
imposing max request size based on the latencies. If you do that, then I
would be quite happy with changing ->max_sectors to be the hardware
limit.
> >From that point of view, the generic block layer is exactly the right
> place to determine those parameters, because the calculation is not
> device-specific.
If you start adding that type of code. That's a different discussion
than this one, though, and it would raise a new set of problems (AS io
scheduler already does some of this privately).
--
Jens Axboe
next prev parent reply other threads:[~2004-03-28 18:16 UTC|newest]
Thread overview: 115+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-03-27 22:37 [PATCH] speed up SATA Jeff Garzik
2004-03-27 23:04 ` Stefan Smietanowski
2004-03-27 23:11 ` Jeff Garzik
2004-03-28 7:23 ` Stefan Smietanowski
2004-03-28 15:37 ` Bartlomiej Zolnierkiewicz
2004-03-27 23:32 ` Bartlomiej Zolnierkiewicz
2004-03-27 23:36 ` Jeff Garzik
2004-03-27 23:40 ` Jeff Garzik
2004-03-28 0:13 ` Bartlomiej Zolnierkiewicz
2004-03-28 0:08 ` Jeff Garzik
2004-03-29 11:42 ` Pavel Machek
2004-03-27 23:37 ` Nick Piggin
2004-03-27 23:44 ` Jeff Garzik
2004-03-27 23:47 ` Nick Piggin
2004-03-27 23:59 ` Jeff Garzik
2004-03-28 14:10 ` Jens Axboe
2004-03-28 17:31 ` Jeff Garzik
2004-03-28 17:35 ` Jens Axboe
2004-03-28 17:48 ` Jeff Garzik
2004-03-28 17:54 ` Jens Axboe
2004-03-28 18:08 ` Jamie Lokier
2004-03-28 18:15 ` Jens Axboe [this message]
2004-03-28 18:55 ` Jeff Garzik
2004-03-29 8:09 ` Jens Axboe
2004-03-29 12:41 ` Jamie Lokier
2004-03-29 12:44 ` Jens Axboe
2004-03-29 12:50 ` Jamie Lokier
2004-03-29 13:05 ` Arjan van de Ven
2004-03-29 13:08 ` Jens Axboe
2004-03-30 8:13 ` Kurt Garloff
2004-03-30 11:40 ` Jens Axboe
2004-03-29 17:19 ` Craig I. Hagan
2004-03-29 18:19 ` Jeff Garzik
2004-03-28 19:06 ` Jeff Garzik
2004-03-28 18:12 ` William Lee Irwin III
2004-03-28 18:17 ` Jens Axboe
2004-03-28 18:30 ` Bartlomiej Zolnierkiewicz
2004-03-28 18:30 ` Jens Axboe
2004-03-28 18:45 ` Bartlomiej Zolnierkiewicz
2004-03-28 18:59 ` Jeff Garzik
2004-03-28 20:32 ` Andrew Morton
2004-03-28 20:45 ` Jeff Garzik
2004-03-29 0:55 ` Andrea Arcangeli
2004-03-29 4:02 ` Jeff Garzik
2004-03-29 13:04 ` Andrea Arcangeli
2004-03-29 19:45 ` Jeff Garzik
2004-03-30 11:09 ` Jens Axboe
2004-03-30 15:54 ` Timothy Miller
2004-03-30 16:20 ` Jeff Garzik
2004-03-30 18:05 ` Timothy Miller
2004-03-30 17:50 ` Jeff Garzik
2004-03-30 18:19 ` Timothy Miller
2004-03-29 4:29 ` Wim Coekaerts
2004-03-29 7:32 ` Denis Vlasenko
2004-03-29 8:13 ` Jens Axboe
2004-03-29 13:05 ` Andrea Arcangeli
2004-03-29 4:31 ` William Lee Irwin III
2004-03-29 4:57 ` Jeff Garzik
2004-03-28 19:52 ` Nuno Silva
2004-03-28 20:02 ` Jeff Garzik
2004-03-28 0:06 ` Jeff Garzik
2004-03-28 0:15 ` Nick Piggin
2004-03-28 0:49 ` Jeff Garzik
2004-03-28 1:02 ` Andrew Morton
2004-03-28 1:09 ` Jeff Garzik
2004-03-28 13:59 ` Jens Axboe
2004-03-28 17:29 ` Jeff Garzik
2004-03-28 17:31 ` Jens Axboe
2004-03-28 13:51 ` Jamie Lokier
2004-03-28 17:24 ` Jeff Garzik
2004-03-28 17:36 ` Jamie Lokier
2004-03-28 17:54 ` Jeff Garzik
2004-03-28 20:50 ` Eric D. Mudama
2004-04-02 10:11 ` Jeremy Higdon
2004-04-02 16:11 ` Jamie Lokier
2004-04-03 10:48 ` Jeremy Higdon
2004-04-03 13:49 ` Jamie Lokier
2004-03-28 17:40 ` Jens Axboe
2004-03-28 17:49 ` Jeff Garzik
2004-03-28 17:55 ` Jens Axboe
2004-03-28 18:04 ` Jeff Garzik
2004-03-28 18:09 ` Jens Axboe
2004-03-28 20:12 ` Jeff Garzik
2004-03-28 20:54 ` Eric D. Mudama
2004-03-28 7:32 ` Stefan Smietanowski
2004-03-28 20:25 ` Jeff Garzik
2004-03-28 21:16 ` Stefan Smietanowski
2004-03-28 21:26 ` Jeff Garzik
2004-03-28 14:08 ` Jens Axboe
2004-03-28 17:38 ` Jeff Garzik
2004-03-28 17:45 ` Jens Axboe
2004-03-28 20:21 ` Jeff Garzik
2004-03-28 0:07 ` Andrew Morton
2004-03-28 0:21 ` Nick Piggin
2004-03-28 4:40 ` Eric D. Mudama
2004-03-28 6:56 ` Nick Piggin
2004-03-28 20:33 ` Eric D. Mudama
2004-03-28 20:59 ` Eric D. Mudama
2004-03-29 1:30 ` Nick Piggin
2004-03-29 5:24 ` Eric D. Mudama
2004-03-29 13:03 ` Jamie Lokier
2004-03-29 11:36 ` Pavel Machek
2004-03-29 18:46 ` David Lang
2004-03-29 20:13 ` Jeff Garzik
2004-03-30 5:55 ` Eric D. Mudama
2004-03-30 11:54 ` Marc Bevand
2004-03-30 13:07 ` Jens Axboe
2004-03-30 13:48 ` Marc Bevand
2004-03-30 13:49 ` Jens Axboe
2004-03-30 15:31 ` Jeff Garzik
2004-03-30 17:42 ` Jeff Garzik
2004-03-31 9:12 ` Marc Bevand
-- strict thread matches above, loose matches on Subject: below --
2004-03-31 5:47 Marcus Hartig
2004-03-31 6:56 ` Jeff Garzik
2004-03-31 16:07 ` Marcus Hartig
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=20040328181502.GO24370@suse.de \
--to=axboe@suse.de \
--cc=akpm@osdl.org \
--cc=jamie@shareable.org \
--cc=jgarzik@pobox.com \
--cc=linux-ide@vger.kernel.org \
--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