From: Jonathan Morton <chromi@cyberspace.org>
To: Andrew Morton <andrewm@uow.edu.au>
Cc: Marcelo Tosatti <marcelo@conectiva.com.br>, linux-mm@kvack.org
Subject: Re: [PATCH] reapswap for 2.4.5-ac10
Date: Wed, 6 Jun 2001 13:50:53 +0100 [thread overview]
Message-ID: <l0313030db743d4a05018@[192.168.239.105]> (raw)
In-Reply-To: <3B1E203C.5DC20103@uow.edu.au>
>> Interesting observation. Something else though, which kswapd is guilty of
>> as well: consider a page shared among many processes, eg. part of a
>> library. As kswapd scans, the page is aged down for each process that uses
>> it. So glibc gets aged down many times more quickly than a non-shared
>> page, precisely the opposite of what we really want to happen.
>
>Perhaps the page should be aged down by (1 / page->count)?
>
>Just scale all the age stuff by 256 or 1000 or whatever and
>instead of saying
>
> page->age -= CONSTANT;
>
>you can use
>
> page->age -= (CONSTANT * 256) / atomic_read(page->count);
>
>
>So the more users, the more slowly it ages. You get the idea.
However big you make that scaling constant, you'll always find some pages
which have more users than that. Consider a shell server, and pages
belonging to glibc. Once the number of users gets that large, the age will
go down by exactly zero, even if it just happens that the page is truly not
in use.
BUT, as it turns out, refill_inactive_scan() already does ageing down on a
page-by-page basis, rather than process-by-process. So I can indeed take
out my little decrement in try_to_swap_out() and just leave the
bail-out-if-age-wasn't-zero code. The age-up code stays - it's good to
catch accesses as frequently as possible.
--------------------------------------------------------------
from: Jonathan "Chromatix" Morton
mail: chromi@cyberspace.org (not for attachments)
The key to knowledge is not to rely on people to teach you it.
GCS$/E/S dpu(!) s:- a20 C+++ UL++ P L+++ E W+ N- o? K? w--- O-- M++$ V? PS
PE- Y+ PGP++ t- 5- X- R !tv b++ DI+++ D G e+ h+ r++ y+(*)
--
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-mm.org/
next prev parent reply other threads:[~2001-06-06 12:50 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-06-06 8:39 Jonathan Morton
2001-06-06 12:21 ` Andrew Morton
2001-06-06 12:47 ` Stephen C. Tweedie
2001-06-06 12:50 ` Jonathan Morton [this message]
2001-06-06 13:12 ` Andrew Morton
2001-06-06 16:44 ` Jonathan Morton
2001-06-06 17:01 ` Andrew Morton
2001-06-06 19:40 ` Jonathan Morton
2001-06-09 7:46 ` Rik van Riel
2001-06-06 19:18 ` Marcelo Tosatti
2001-06-06 21:13 ` Jonathan Morton
2001-06-07 14:45 ` John Stoffel
2001-06-07 16:45 ` Jonathan Morton
2001-06-11 4:43 ` Joseph A. Knapka
-- strict thread matches above, loose matches on Subject: below --
2001-06-05 19:48 Marcelo Tosatti
2001-06-05 22:14 ` Stephen C. Tweedie
2001-06-05 20:46 ` Marcelo Tosatti
2001-06-06 12:31 ` Hugh Dickins
2001-06-06 19:17 ` Marcelo Tosatti
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='l0313030db743d4a05018@[192.168.239.105]' \
--to=chromi@cyberspace.org \
--cc=andrewm@uow.edu.au \
--cc=linux-mm@kvack.org \
--cc=marcelo@conectiva.com.br \
/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