public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Rik van Riel <riel@redhat.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org
Subject: Re: userspace pagecache management tool
Date: Sun, 04 Mar 2007 11:01:46 -0500	[thread overview]
Message-ID: <45EAED6A.9090706@redhat.com> (raw)
In-Reply-To: <20070304040742.e56fc57f.akpm@linux-foundation.org>

Andrew Morton wrote:
> On Sat, 03 Mar 2007 20:56:27 -0500 Rik van Riel <riel@redhat.com> wrote:
> 
>> Andrew Morton wrote:
>>
>>>>> Doing a refault thing would help a bit, but stops working at a certain point.
>>>> At what point does it stop working?
>>> We need to store that this-page-got-reclaimed info somewhere.  I don't know
>>> how space-efficient that is.  Did anyone ever do an implementation?
>> One 32 bit word per evicted page that we keep track of.
> 
> ok...
> 
> I wonder if we really need a new data structure to track that.  I mean,
> once a file-backed (or indeed swapcache) page has been reclaimed, its
> radix-tree slot is just sitting there with zeroes in it, asking us to reuse
> that space for something interesting, no?
> 
> Of course, if all 64 pages in a radix-tree node get removed, we'll
> currently free the node itself.  We could stop doing that, but the effects
> of that might be pretty bad sometimes.  Instead, it sounds sensible to
> populate the now-null slot in the parent radix-tree node with an
> average/max/min/per-child-bitmap/whatever of the metrics for the 64
> non-resident pages which that non-leaf slot represents.  So as the period
> since a single page got evicted increases and increases, our information
> about its state becomes less and less accurate.
> 
> If that inaccuracy is a problem then perhaps we could defer the collapsing
> of a now-empty node into its parent in some manner.

We know exactly how far to defer that collapsing, too.

We know at what rate we rotate through the active list,
and the size of the active list.

We also know the rate at which we reclaim pages, and
the size of the inactive list.

Combine the two, and you have an idea roughly how many
page faults there are between the accesses to the coldest
page on the active list.

We don't have to keep the evicted page history beyond
that point, because pages that get refaulted after such
a long interval have a longer inter-reference distance
and should go onto the inactive list - ie. the default
list for unknown pages.

>> If you can find holes in http://linux-mm.org/PageReplacementDesign
>> please let me know :)
> 
> That all looks pretty non-crazy and implementable to me.  Alas, getting the
> stuff written and working is 1% of the effort.  The rest is the nasty hunt
> for new corner-cases and general productisation hassle.  But if initial
> results show benefit, I expect we could manage all that.

True, but I've looked through a few hundred VM bugzillas
to validate the design against all the common corner cases,
all the way from RHEL3 (which also has split anon/file
lists) through today.

I'm trying to keep the known-good bits of our policy as
much as possible, introducing big changes only for those
corner cases that plagued multiple VMs in the past.

-- 
Politics is the struggle between those who want to make their country
the best in the world, and those who believe it already is.  Each group
calls the other unpatriotic.

  parent reply	other threads:[~2007-03-04 16:02 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-03-03 20:29 userspace pagecache management tool Andrew Morton
2007-03-03 20:40 ` Rik van Riel
2007-03-03 21:12   ` Andrew Morton
2007-03-03 21:30     ` Rik van Riel
2007-03-03 21:41       ` bert hubert
2007-03-03 22:14         ` Andrew Morton
2007-03-03 22:19           ` Rik van Riel
2007-03-03 22:26             ` Andrew Morton
2007-03-03 22:28               ` Rik van Riel
2007-03-03 22:38                 ` Andrew Morton
2007-03-03 22:56               ` Erik Andersen
2007-03-03 23:01               ` bert hubert
2007-03-03 23:45                 ` Andrew Morton
2007-03-06 12:10                   ` Pádraig Brady
2007-03-06 21:40                     ` Andrew Morton
2007-03-06 21:44                       ` Rik van Riel
2007-03-07 11:39                       ` Pádraig Brady
2007-03-07 18:50                         ` Andrew Morton
2007-03-08  7:59                   ` Vaidyanathan Srinivasan
2007-03-08  8:12                     ` Andrew Morton
2007-03-03 22:07       ` Andrew Morton
2007-03-03 22:25         ` Rik van Riel
2007-03-03 22:37           ` Andrew Morton
2007-03-03 22:52           ` Andrew Morton
2007-03-04  0:01             ` Rik van Riel
2007-03-04  1:02               ` Andrew Morton
2007-03-04  1:23                 ` Rik van Riel
2007-03-04  1:49                   ` Andrew Morton
2007-03-04  1:56                     ` Rik van Riel
2007-03-04 12:07                       ` Andrew Morton
2007-03-04 14:35                         ` Peter Zijlstra
2007-03-04 16:01                         ` Rik van Riel [this message]
2007-03-03 22:58 ` Ray Lee
2007-03-03 23:34   ` Andrew Morton
2007-03-04  1:02     ` Ray Lee
2007-03-04  1:21       ` Andrew Morton
2007-03-04  0:14 ` Eric St-Laurent
2007-03-04  1:10   ` Andrew Morton
2007-03-04  1:39   ` Rik van Riel
2007-03-04  1:16 ` Lee Revell
2007-03-04  1:39   ` Andrew Morton
2007-03-04  2:35     ` Lee Revell
2007-03-04  4:35       ` Andrew Morton
2007-03-05 11:02 ` Pádraig Brady
2007-03-05 11:12   ` Andrew Morton

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=45EAED6A.9090706@redhat.com \
    --to=riel@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    /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