From: Rajagopal Ananthanarayanan <ananth@sgi.com>
To: riel@conectiva.com
Cc: linux-mm@kvack.org
Subject: Re: lru_cache_add() -> deactivate_page_nolock()?
Date: Thu, 28 Sep 2000 18:37:54 -0700 [thread overview]
Message-ID: <39D3F272.BC026A47@sgi.com> (raw)
In-Reply-To: <8r0dot$13eak9$1@fido.engr.sgi.com>
[ Bad form: replying to my own post, etc. ... ]
Rajagopal Ananthanarayanan wrote:
>
> Few questions on aging & deactivation:
>
> Suppose a page has to be freshly allocated
> (no cache hit) in __grab_cache_page() in generic_file_write().
> What is the age of the page at the time of its lru_cache_add?
> Won't the age be zero?
Two cases here, depending on what happened in __alloc_pages():
1. page->age will be PAGE_AGE_START if page was previously
freed (__free_pages_ok() sets the age)
2. page->age will be zero if page was obtained through
a reclaim_page().
I can't believe this was a design choice. Simply
code like this is missing at the bottom of reclaim_page():
---------
struct page * reclaim_page(zone_t * zone)
{
[ ... ]
if (page)
page->age = PAGE_START_AGE;
return page;
}
----------
This will avoid nasty deactivation immediately on
entering the page into the cache.
... btw, I have tried the above fix, and it does
improve dbench performance in cases where few
clients (1-2) are used on my 64MB system.
Rik, what do you think?
> If so, won't it be the case that deactive_page_nolock() will be
> called _every_ time such a page is lru_cache_add'ed,
> and that this call will be the one from here:
>
> --------
> void lru_cache_add(struct page * page)
> {
> [ ... ]
> /* This should be relatively rare */
> if (!page->age)
> deactivate_page_nolock(page);
> [ ... ]
> }
> ----------
>
> If so, I fail to understand the motivation behind
> the "relatively rare" comment ...
>
> --------------------------------------------------------------------------
> Rajagopal Ananthanarayanan ("ananth")
> Member Technical Staff, SGI.
> --------------------------------------------------------------------------
> --
> 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/
--
--------------------------------------------------------------------------
Rajagopal Ananthanarayanan ("ananth")
Member Technical Staff, SGI.
--------------------------------------------------------------------------
--
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 parent reply other threads:[~2000-09-29 1:37 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <8r0dot$13eak9$1@fido.engr.sgi.com>
2000-09-29 1:37 ` Rajagopal Ananthanarayanan [this message]
2000-09-29 14:34 ` Rik van Riel
2000-09-28 21:36 Rajagopal Ananthanarayanan
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=39D3F272.BC026A47@sgi.com \
--to=ananth@sgi.com \
--cc=linux-mm@kvack.org \
--cc=riel@conectiva.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