From: "Stephen C. Tweedie" <sct@redhat.com>
To: "David S. Miller" <davem@redhat.com>
Cc: sct@redhat.com, sim@stormix.com, jgarzik@mandrakesoft.com,
riel@nl.linux.org, andrea@suse.de, linux-mm@kvack.org,
bcrl@redhat.com, linux-kernel@vger.rutgers.edu
Subject: Re: [PATCH] 2.3.99-pre6-3+ VM rebalancing
Date: Wed, 26 Apr 2000 14:00:31 +0100 [thread overview]
Message-ID: <20000426140031.L3792@redhat.com> (raw)
In-Reply-To: <200004261125.EAA12302@pizda.ninka.net>; from davem@redhat.com on Wed, Apr 26, 2000 at 04:25:23AM -0700
Hi,
On Wed, Apr 26, 2000 at 04:25:23AM -0700, David S. Miller wrote:
>
> Getting the VM to respond properly in a way which doesn't freak out
> in the mass-filescan case is non-trivial. Simple LRU over all pages
> simply doesn't cut it.
>
> I believe this is not true at all. Clean pages will be preferred to
> toss simply because they are easier to get rid of.
As soon as you differentiate between clean and dirty page again, you
no longer have pure LRU. We're agreeing here --- LRU on its own is not
enough, you need _some_ mechanism to give preference to the eviction of
clean, pure cache pages. Whether it's different queues, or separate
mechanisms for swapout as we have now, is a different issue --- the one
thing we cannot afford is blind LRU without any feedback on the
properties of the pages themselves.
> I am of the opinion that vmscan.c:swap_out() is one of our biggest
> problems, because it kills us in the case where a few processes have
> a pagecache page mapped, haven't accessed it in a long time, and
> swap_out doesn't unmap those pages in time for the LRU shrink_mmap
> code to fully toss it.
Yep
> This happens even though these pages are
> excellant candidates for freeing. So here is where I came to the
> conclusion that LRU needs to have the capability of tossing arbitrary
> pages from process address spaces. This is why in my experiental
> hacks I just killed swap_out() completely, and taught LRU how to
> do all of the things swap_out did. I could do this because the
> LRU scanner could go from a page to all mappings of that page, even
> for anonymous and swap pages.
Doing it isn't the problem. Doing it efficiently is, if you have
fork() and mremap() in the picture. With mremap(), you cannot assume
that the virtual address of an anonymous page is the same in all
processes which have the page mapped.
So, basically, to find all the ptes for a given page, you have to
walk every single vma in every single mm which is a fork()ed
ancestor or descendent of the mm whose address_space you indexed
the page against.
Granted, it's probably faster than the current swap_out mechanism, but
the worst case is still not much fun if you have fragmented address
spaces with a lot of vmas.
Detecting the right vma isn't hard, because the vma's vm_pgoff is
preserved over mremap(). It's the linear scan that is the danger.
--Stephen
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux.eu.org/Linux-MM/
next prev parent reply other threads:[~2000-04-26 13:00 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2000-04-23 2:08 Rik van Riel
2000-04-25 1:25 ` Simon Kirby
2000-04-25 15:09 ` Rik van Riel
2000-04-25 15:59 ` Andrea Arcangeli
2000-04-25 17:20 ` Rik van Riel
2000-04-25 18:36 ` Simon Kirby
2000-04-25 18:59 ` Jeff Garzik
2000-04-25 19:06 ` Simon Kirby
2000-04-25 19:34 ` Rik van Riel
2000-04-26 11:01 ` Stephen C. Tweedie
2000-04-26 11:15 ` Rik van Riel
2000-04-26 12:29 ` Stephen C. Tweedie
2000-04-26 12:45 ` David S. Miller
2000-04-26 11:25 ` David S. Miller
2000-04-26 13:00 ` Stephen C. Tweedie [this message]
2000-04-26 13:11 ` David S. Miller
2000-04-26 15:23 ` Stephen C. Tweedie
2000-04-26 15:25 ` David S. Miller
2000-04-26 16:09 ` Stephen C. Tweedie
2000-04-27 20:28 ` Simon Kirby
2000-04-27 22:32 ` Jamie Lokier
2000-04-26 13:46 ` Rik van Riel
2000-04-26 14:33 ` David S. Miller
2000-04-26 16:31 ` Andi Kleen
2000-04-26 15:28 ` David S. Miller
2000-04-26 15:41 ` Andi Kleen
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=20000426140031.L3792@redhat.com \
--to=sct@redhat.com \
--cc=andrea@suse.de \
--cc=bcrl@redhat.com \
--cc=davem@redhat.com \
--cc=jgarzik@mandrakesoft.com \
--cc=linux-kernel@vger.rutgers.edu \
--cc=linux-mm@kvack.org \
--cc=riel@nl.linux.org \
--cc=sim@stormix.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