From: Andrew Morton <akpm@zip.com.au>
To: Rik van Riel <riel@conectiva.com.br>
Cc: Daniel Phillips <phillips@bonn-fries.net>,
Alan Cox <alan@lxorguk.ukuu.org.uk>,
yodaiken@fsmlabs.com, Jeff Dike <jdike@karaya.com>,
Benjamin LaHaise <bcrl@redhat.com>,
"H. Peter Anvin" <hpa@zytor.com>,
linux-kernel@vger.kernel.org
Subject: Re: [RFC] Arch option to touch newly allocated pages
Date: Thu, 07 Mar 2002 14:02:06 -0800 [thread overview]
Message-ID: <3C87E35E.B841801D@zip.com.au> (raw)
In-Reply-To: <3C87D40C.603DE513@zip.com.au> <Pine.LNX.4.44L.0203071818140.2181-100000@imladris.surriel.com>
Rik van Riel wrote:
>
> On Thu, 7 Mar 2002, Andrew Morton wrote:
>
> > > Nope. Readahead pages are clean and very easy to evict, so
> > > it's still trivial to evict all the pages from another readahead
> > > window because everybody's readahead window is too large.
>
> > Any clever ideas?
>
> 1) keep track of which pages we are reading ahead
> ... the readahead code already does this
>
> 2) at read() or fault time, see if the page
> (a) is resident
> (b) is in the current readahead window,
> ie. already read ahead
>
> 3) if the page is in the current readahead window
> but NOT resident, the page was read in and
> evicted before we got around to using it, so
> readahead window thrashing is going on
> ... in that case, collapse the size of the
> readahead window TCP-style
I have all that. See handle_ra_thrashing() in
http://www.zip.com.au/~akpm/linux/patches/2.5/2.5.6-pre2/dallocbase-10-readahead.patch
> 4) slowly growing the readahead window when there is
> enough memory available, in order to minimise the
> number of disk seeks
>
> 5) the growing in (3) and shrinking in (4) mean that
> the readahead size of all streaming IO in the system
> gets automatically balanced against each other and
> against other memory demand in the system
Doesn't work.
Ah, this is hard to describe.
umm.
a) Suppose that we're getting readahead thrashing. readahead
pages are getting dropped. So we keep seeking to each
file to get new data, so we do a ton of seeking.
b) Suppose that we nicely detect thrashing and reduce the readahead
window. Well, we *still* need to seek to each file to read
some blocks.
See? They're equivalent. In case a) we're doing more (pointless)
I/O, but the cost of that is vanishingly small because it's just
one request.
So what *is* a solution. Well, there's only so much memory available.
In either case a) or case b) we're "fairly" distributing that memory
between all files. And that's the problem. *All* the files have too
small a readahead window. Which points one at: we need to stop being
fair. We need to give some files a good readahead window and others
not. The "soft pinning" which I propose with GFP_READAHEAD and
PG_readhead might have that effect, I think.
I'll try it, see how it feels.
-
next prev parent reply other threads:[~2002-03-07 22:04 UTC|newest]
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-03-03 21:12 [RFC] Arch option to touch newly allocated pages Jeff Dike
2002-03-03 22:01 ` Alan Cox
2002-03-03 23:27 ` Jeff Dike
2002-03-03 23:48 ` Alan Cox
2002-03-04 3:16 ` Jeff Dike
2002-03-04 3:35 ` Alan Cox
2002-03-04 5:04 ` Jeff Dike
2002-03-04 15:09 ` Alan Cox
2002-03-04 17:42 ` Jeff Dike
2002-03-04 18:29 ` Alan Cox
2002-03-04 18:36 ` Jeff Dike
2002-03-04 18:49 ` Alan Cox
2002-03-04 20:46 ` Jeff Dike
2002-03-04 22:49 ` Alan Cox
2002-03-04 17:46 ` H. Peter Anvin
2002-03-04 18:34 ` Jeff Dike
2002-03-04 18:33 ` H. Peter Anvin
2002-03-04 20:36 ` Jeff Dike
2002-03-04 22:51 ` Alan Cox
2002-03-05 4:15 ` Jeff Dike
2002-03-05 4:28 ` Benjamin LaHaise
2002-03-05 4:40 ` Jeff Dike
2002-03-05 5:34 ` H. Peter Anvin
2002-03-05 14:43 ` Jeff Dike
2002-03-05 16:37 ` H. Peter Anvin
2002-03-05 16:56 ` Wayne Whitney
2002-03-05 18:12 ` Jeff Dike
2002-03-05 18:30 ` Benjamin LaHaise
2002-03-06 14:59 ` Daniel Phillips
2002-03-06 15:24 ` Benjamin LaHaise
2002-03-06 15:24 ` Daniel Phillips
2002-03-06 16:36 ` Benjamin LaHaise
2002-03-06 23:14 ` Daniel Phillips
2002-03-06 23:20 ` Benjamin LaHaise
2002-03-06 23:26 ` Daniel Phillips
2002-03-06 23:33 ` H. Peter Anvin
2002-03-07 0:08 ` Daniel Phillips
2002-03-07 1:27 ` Jeff Dike
2002-03-07 1:52 ` Benjamin LaHaise
2002-03-08 19:17 ` Jeff Dike
2002-03-08 21:22 ` Benjamin LaHaise
2002-03-07 13:49 ` Alan Cox
2002-03-07 13:36 ` Daniel Phillips
2002-03-07 14:04 ` yodaiken
2002-03-07 14:21 ` Daniel Phillips
2002-03-07 14:38 ` yodaiken
2002-03-07 15:31 ` Daniel Phillips
2002-03-07 16:50 ` yodaiken
2002-03-07 18:07 ` Daniel Phillips
2002-03-07 18:15 ` yodaiken
2002-03-07 19:22 ` Alan Cox
2002-03-07 22:43 ` David Woodhouse
2002-03-07 23:09 ` Alan Cox
2002-03-07 22:57 ` David Woodhouse
2002-03-07 14:43 ` Alan Cox
2002-03-07 15:32 ` Daniel Phillips
2002-03-07 16:19 ` Alan Cox
2002-03-07 17:54 ` Daniel Phillips
2002-03-07 15:34 ` Daniel Phillips
2002-03-07 19:18 ` Andrew Morton
2002-03-07 20:10 ` Rik van Riel
2002-03-07 20:56 ` Andrew Morton
2002-03-07 21:23 ` Rik van Riel
2002-03-07 22:02 ` Andrew Morton [this message]
2002-03-07 22:10 ` Rik van Riel
2002-03-07 22:23 ` Andrew Morton
2002-03-07 22:27 ` Rik van Riel
2002-03-07 22:41 ` Andrew Morton
2002-03-07 22:42 ` David Lang
2002-03-06 16:03 ` Jesse Pollard
2002-03-06 17:08 ` Jeff Dike
2002-03-06 17:33 ` Alan Cox
2002-03-07 0:28 ` Jeff Dike
2002-03-07 0:44 ` Alan Cox
2002-03-05 18:46 ` H. Peter Anvin
2002-03-06 1:30 ` Alan Cox
2002-03-06 10:49 ` David Woodhouse
2002-03-06 14:26 ` Jeff Dike
2002-03-06 16:50 ` Alan Cox
2002-03-06 20:25 ` Jeff Dike
2002-03-06 20:54 ` Alan Cox
2002-03-06 21:27 ` Malcolm Beattie
2002-03-06 23:26 ` Jeff Dike
2002-03-06 21:27 ` David Woodhouse
2002-03-06 22:25 ` Joseph Malicki
2002-03-07 0:04 ` Richard Gooch
2002-03-07 0:28 ` Jeff Dike
2002-03-07 0:44 ` Alan Cox
2002-03-06 22:21 ` Pavel Machek
2002-03-07 11:30 ` Dave Jones
2002-03-07 18:21 ` H. Peter Anvin
2002-03-05 14:43 ` Jeff Dike
2002-03-05 16:57 ` H. Peter Anvin
2002-03-05 18:14 ` Jeff Dike
2002-03-05 18:45 ` H. Peter Anvin
2002-03-05 17:30 ` Jan Harkes
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=3C87E35E.B841801D@zip.com.au \
--to=akpm@zip.com.au \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=bcrl@redhat.com \
--cc=hpa@zytor.com \
--cc=jdike@karaya.com \
--cc=linux-kernel@vger.kernel.org \
--cc=phillips@bonn-fries.net \
--cc=riel@conectiva.com.br \
--cc=yodaiken@fsmlabs.com \
/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