From: Linus Torvalds <torvalds@transmeta.com>
To: Marcelo Tosatti <marcelo@conectiva.com.br>
Cc: Zlatko Calusic <zlatko@iskon.hr>, linux-mm@kvack.org
Subject: Re: pre2 swap_out() changes
Date: Fri, 12 Jan 2001 16:23:15 -0800 (PST) [thread overview]
Message-ID: <Pine.LNX.4.10.10101121617230.8097-100000@penguin.transmeta.com> (raw)
In-Reply-To: <Pine.LNX.4.21.0101121705540.10842-100000@freak.distro.conectiva>
On Fri, 12 Jan 2001, Marcelo Tosatti wrote:
> >
> > I really think that that page_launder() should be a "try_to_free_page()"
> > instead.
>
> Linus,
>
> do_try_to_free_pages() will shrink the caches too, so I'm not sure if that
> is the reason for the slowdown Zlatko is seeing.
The point is that do_try_to_free_pages() will _also_ cause some VM swapout
activity, which will cause _future_ out-of-memory behaviour to be less of
a problem (because in the future we can depend on page_launder() instead
of having to flush caches).
> I dont understand the following changes you've done to try_to_swapout() in
> pre2 (as someone previously commented on this thread):
I removed the extra aging, because basically it was a hack to avoid
swapping out stuff that shouldn't be swapped out.
> Secondly, you removed the "(page->age > 0)" check which is obviously
> correct to me (we don't want to unmap the page if it does not have age 0)
It's NOT "obviously correct". In fact, it's obviously _not_ correct. The
fact that the _page_ is new, does not mean that the page table reference
to that page is new. We _should_ drop the page from the page tables:
because that will mean that we will be better able to handle it in
page_launder().
If the page truly is new (because of some other user), then page_launder()
won't drop it, and it doesn't matter. But dropping it from the VM means
that the list handling can work right, and that the page will be aged (and
thrown out) at the same rate as other pages.
Now, I did find one bug: we should say
if (!page->age)
deactivate_page(page);
because we should not deactivate the page if it has an age (but we SHOULD
throw it out of the page tables).
Linus
--
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:[~2001-01-13 0:23 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-01-11 10:38 Marcelo Tosatti
2001-01-11 18:49 ` Linus Torvalds
2001-01-12 11:35 ` Zlatko Calusic
2001-01-12 19:45 ` Linus Torvalds
2001-01-12 19:22 ` Marcelo Tosatti
2001-01-13 0:23 ` Linus Torvalds [this message]
2001-01-12 22:41 ` Marcelo Tosatti
2001-01-13 0:45 ` Linus Torvalds
2001-01-17 7:05 ` Rik van Riel
2001-01-18 11:54 ` Rik van Riel
2001-01-13 11:41 ` Zlatko Calusic
2001-01-17 7:08 ` Rik van Riel
2001-01-13 11:51 ` Zlatko Calusic
2001-01-14 2:39 ` Marcelo Tosatti
2001-01-14 4:36 ` Linus Torvalds
2001-01-14 3:50 ` Marcelo Tosatti
2001-01-14 15:51 ` Ed Tomlinson
2001-01-14 14:13 ` Marcelo Tosatti
2001-01-14 16:15 ` Zlatko Calusic
2001-01-14 17:22 ` Zlatko Calusic
2001-01-17 7:16 ` Rik van Riel
2001-01-17 7:15 ` Rik van Riel
2001-01-17 7:12 ` Rik van Riel
2001-01-11 20:52 Benjamin Redelings I
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=Pine.LNX.4.10.10101121617230.8097-100000@penguin.transmeta.com \
--to=torvalds@transmeta.com \
--cc=linux-mm@kvack.org \
--cc=marcelo@conectiva.com.br \
--cc=zlatko@iskon.hr \
/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