From: Linus Torvalds <torvalds@transmeta.com>
To: phillips@bonn-fries.net, linux-kernel@vger.kernel.org
Subject: Re: [resent PATCH] Re: very slow parallel read performance
Date: Mon, 27 Aug 2001 14:44:01 -0700 [thread overview]
Message-ID: <200108272144.f7RLi1707676@penguin.transmeta.com> (raw)
In-Reply-To: <20010827203125Z16070-32383+1731@humbolt.nl.linux.org>
In-Reply-To: <Pine.LNX.4.33L.0108241600410.31410-100000@duckman.distro.conectiva> <20010827185803Z16034-32384+632@humbolt.nl.linux.org> <200108271953.VAA20749@ns.cablesurf.de>
In article <20010827203125Z16070-32383+1731@humbolt.nl.linux.org> you write:
>On August 27, 2001 09:43 pm, Oliver Neukum wrote:
>>
>> If we are optimising for streaming (which readahead is made for) dropping
>> only one page will buy you almost nothing in seek time. You might just as
>> well drop them all and correct your error in one larger read if necessary.
>> Dropping the oldest page is possibly the worst you can do, as you will need
>> it soonest.
>
>Yes, good point. OK, I'll re-examine the dropping logic. Bear in mind,
>dropping readahead pages is not supposed to happen frequently under
>steady-state operation, so it's not that critical what we do here, it's going
>to be hard to create a load that shows the impact. The really big benefit
>comes from not overdoing the readahead in the first place, and not underdoing
>it either.
Note that the big reason why I did _not_ end up just increasing the
read-ahead value from 31 to 511 (it was there for a short while) is that
large read-ahead does not necessarily improve performance AT ALL,
regardless of memory pressure.
Why? Because if the IO request queue fills up, the read-ahead actually
ends up waiting for requests, and ends up being synchronous. Which
totally destroys the whole point of doing read-ahead in the first place.
And a large read-ahead only makes this more likely.
Also note that doing tons of parallel reads _also_ makes this more
likely, and actually ends up also mixing the read-ahead streams which is
exactly what you do not want to do.
The solution to both problems is to make the read-ahead not wait
synchronously on requests - that way the request allocation itself ends
up being a partial throttle on memory usage too, so that you actually
probably end up fixing the problem of memory pressure _too_.
This requires that the read-ahead code would start submitting the blocks
using READA, which in turn requires that the readpage() function get a
"READ vs READA" argument. And the ll_rw_block code would obviously have
to honour the rw_ahead hint and submit_bh() would have to return an
error code - which it currently doesn't do, but which should be trivial
to implement.
I really think that doing anything else is (a) stupid and (b) wrong.
Trying to come up with a complex algorithm on how to change read-ahead
based on memory pressure is just bound to be extremely fragile and have
strange performance effects. While letting the IO layer throttle the
read-ahead on its own is the natural and high-performance approach.
Linus
next prev parent reply other threads:[~2001-08-27 21:46 UTC|newest]
Thread overview: 123+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-08-23 21:35 Lehmann
2001-08-24 7:35 ` [resent PATCH] " Roger Larsson
2001-08-24 17:43 ` Rik van Riel
2001-08-24 18:28 ` Roger Larsson
2001-08-24 19:02 ` Rik van Riel
2001-08-24 20:37 ` Gérard Roudier
2001-08-24 23:12 ` Rik van Riel
2001-08-25 8:02 ` Gérard Roudier
2001-08-25 9:26 ` Roger Larsson
2001-08-25 11:49 ` Gérard Roudier
2001-08-25 17:56 ` Roger Larsson
2001-08-25 19:13 ` Gérard Roudier
2001-08-25 13:17 ` Rik van Riel
2001-08-24 22:29 ` Daniel Phillips
2001-08-24 23:10 ` Rik van Riel
2001-08-25 0:42 ` Daniel Phillips
2001-08-27 7:08 ` Helge Hafting
2001-08-27 14:31 ` Daniel Phillips
2001-08-27 14:42 ` Alex Bligh - linux-kernel
2001-08-27 15:14 ` Rik van Riel
2001-08-27 16:04 ` Daniel Phillips
[not found] ` <Pine.LNX.4.33L.0108271213370.5646-100000@imladris.rielhome.cone ctiva>
2001-08-27 19:34 ` Alex Bligh - linux-kernel
2001-08-27 20:03 ` Oliver Neukum
2001-08-27 20:19 ` Alex Bligh - linux-kernel
2001-08-27 21:38 ` Oliver.Neukum
2001-08-27 22:26 ` Alex Bligh - linux-kernel
2001-08-27 21:29 ` Daniel Phillips
2001-08-27 16:02 ` Daniel Phillips
2001-08-27 19:36 ` Alex Bligh - linux-kernel
2001-08-27 20:24 ` Daniel Phillips
2001-08-27 16:55 ` David Lang
2001-08-27 18:54 ` Daniel Phillips
2001-08-27 18:37 ` Oliver Neukum
2001-08-27 19:04 ` Daniel Phillips
2001-08-27 19:43 ` Oliver Neukum
2001-08-27 20:37 ` Daniel Phillips
2001-08-27 22:10 ` Oliver.Neukum
2001-08-27 21:44 ` Linus Torvalds [this message]
2001-08-27 22:30 ` Daniel Phillips
2001-08-27 23:00 ` Marcelo Tosatti
2001-08-28 3:10 ` Linus Torvalds
2001-08-27 19:55 ` Richard Gooch
2001-08-27 20:09 ` Oliver Neukum
2001-08-27 21:06 ` Daniel Phillips
2001-08-24 20:18 ` Daniel Phillips
2001-08-24 20:19 ` Rik van Riel
2001-08-24 21:11 ` Daniel Phillips
2001-08-24 23:03 ` Rik van Riel
2001-08-25 0:41 ` Daniel Phillips
2001-08-25 1:34 ` Rik van Riel
2001-08-25 15:49 ` Daniel Phillips
2001-08-25 15:50 ` Rik van Riel
2001-08-25 16:28 ` Lehmann
2001-08-25 16:34 ` Rik van Riel
2001-08-25 16:41 ` Lehmann
2001-08-26 16:55 ` Daniel Phillips
2001-08-26 18:39 ` Rik van Riel
2001-08-26 19:46 ` Daniel Phillips
2001-08-26 19:52 ` Rik van Riel
2001-08-26 20:08 ` Daniel Phillips
2001-08-26 22:33 ` Russell King
2001-08-26 23:24 ` Daniel Phillips
2001-08-26 23:24 ` Russell King
2001-08-27 0:07 ` Rik van Riel
2001-08-27 0:02 ` Rik van Riel
2001-08-27 0:42 ` Daniel Phillips
2001-08-25 16:43 ` Daniel Phillips
2001-08-25 19:15 ` Alan Cox
2001-08-25 19:35 ` Lehmann
2001-08-25 20:52 ` Rik van Riel
2001-08-26 1:38 ` Daniel Phillips
2001-08-26 2:49 ` Lehmann
2001-08-26 17:29 ` Daniel Phillips
2001-08-26 17:37 ` Craig I. Hagan
2001-08-26 18:56 ` Rik van Riel
2001-08-26 19:18 ` Lehmann
2001-08-26 21:07 ` Daniel Phillips
2001-08-26 22:12 ` Rik van Riel
2001-08-26 23:24 ` Lehmann
2001-08-26 20:26 ` Gérard Roudier
2001-08-26 21:20 ` Daniel Phillips
2001-08-26 3:32 ` Rik van Riel
2001-08-26 13:22 ` Lehmann
2001-08-26 13:48 ` Rik van Riel
2001-08-26 14:55 ` Lehmann
2001-08-26 15:06 ` Rik van Riel
2001-08-26 15:25 ` Lehmann
2001-08-25 21:33 ` Alan Cox
2001-08-25 23:34 ` Lehmann
2001-08-26 2:02 ` Rik van Riel
2001-08-26 2:57 ` Lehmann
2001-08-26 0:46 ` John Stoffel
2001-08-26 1:07 ` Alan Cox
2001-08-26 3:30 ` Rik van Riel
2001-08-26 3:40 ` Rik van Riel
2001-08-26 5:28 ` Daniel Phillips
2001-08-24 23:23 ` Lehmann
[not found] ` <200108242344.f7ONi0h21270@mailg.telia.com>
2001-08-25 0:28 ` Lehmann
2001-08-25 3:09 ` Rik van Riel
2001-08-25 9:13 ` Gérard Roudier
2001-08-26 16:54 ` Daniel Phillips
2001-08-26 18:59 ` Victor Yodaiken
2001-08-26 19:38 ` Rik van Riel
2001-08-26 20:05 ` Victor Yodaiken
2001-08-26 20:34 ` Rik van Riel
2001-08-26 20:45 ` Victor Yodaiken
2001-08-26 21:00 ` Alan Cox
2001-08-26 20:42 ` Daniel Phillips
2001-08-26 19:31 ` Lehmann
2001-08-24 19:42 ` Lehmann
2001-08-24 21:42 ` Gérard Roudier
2001-08-25 0:05 ` Craig I. Hagan
2001-08-27 2:03 Rick Hohensee
2001-08-27 2:52 ` Keith Owens
2001-08-28 17:52 ` Kai Henningsen
2001-08-28 21:54 ` Matthew M
2001-08-28 1:08 Dieter Nützel
2001-08-28 0:05 ` Marcelo Tosatti
2001-08-28 1:54 ` Daniel Phillips
2001-08-28 5:01 ` Mike Galbraith
2001-08-28 18:18 ` Andrew Morton
2001-08-28 18:45 ` Hans Reiser
2001-08-28 15:28 Dieter Nützel
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=200108272144.f7RLi1707676@penguin.transmeta.com \
--to=torvalds@transmeta.com \
--cc=linux-kernel@vger.kernel.org \
--cc=phillips@bonn-fries.net \
/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
all inboxes | Powered by JetHome®