public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@zip.com.au>
To: Linus Torvalds <torvalds@transmeta.com>
Cc: "David S. Miller" <davem@redhat.com>, linux-kernel@vger.kernel.org
Subject: Re: [patch 2/13] remove pages from the LRU in __free_pages_ok()
Date: Sun, 28 Jul 2002 23:59:21 -0700	[thread overview]
Message-ID: <3D44E7C9.1302DF56@zip.com.au> (raw)
In-Reply-To: Pine.LNX.4.44.0207282324340.872-100000@home.transmeta.com

Linus Torvalds wrote:
> 
> On Sun, 28 Jul 2002, David S. Miller wrote:
> >
> > So when the user's reference is dropped, does that operation kill it
> > from the LRU or will the socket's remaining reference to that page
> > defer the LRU removal?
> 
> That is indeed the question. Right now it will defer, which looks like a
> bug. Or at least it is a bug without the interrupt-safe LRU manipulations.
> 
> I'm starting to be more convinced about Andrew's alternate patch, the
> "move LRU lock innermost and make it irq-safe".
> 
> Which also would make it saner to do the LRU handling inside
> __put_pages_ok() (and actually remove the BUG_ON(in_interrupt()) that
> Andrew had there in the old patch).
> 

That was a big lump of patch, and I need to get all the other
MM developers to say "yes, we can live with this".  Everything which
takes the LRU lock needed to be redone to get the holdtimes and
acquisition frequency down.

It's quite unfeasible for 2.4.   The only 2.4 kernel which
has the in_interrupt() check is Andrea's.  And, I assume,
the SuSE production kernel.  So empirically, we're probably OK there.
But the RH kernel has AIO (yes?) which may change the picture.

A simple little hack which would prevent it in 2.4 would be,
in __free_pages_ok():

	if (PageLRU(page)) {
		if (in_interrupt()) {
			SetPageFoo(page);
			return;
		}
		lru_cache_del(page);
	}

and in shrink_cache(), inside pagemap_lru_lock:

	if (PageFoo(page)) {
		__lru_cache_del(page);
		BUG_ON(page_count(page) != 0);
		page_cache_get(page);
		__free_page(page);
		continue;
	}

This is basically Dave's "defer it to process context", with kswapd
doing the work.
		
-

  reply	other threads:[~2002-07-29  6:47 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-07-28  7:32 [patch 2/13] remove pages from the LRU in __free_pages_ok() Andrew Morton
2002-07-28 23:54 ` Linus Torvalds
2002-07-29  0:32   ` Andrew Morton
2002-07-29  0:37     ` Linus Torvalds
2002-07-29  0:59       ` Andrew Morton
2002-07-29  0:59         ` Rik van Riel
2002-07-29  2:50     ` David S. Miller
2002-07-29  3:51       ` Linus Torvalds
2002-07-29  3:43         ` David S. Miller
2002-07-29  4:21           ` Linus Torvalds
2002-07-29  5:43             ` David S. Miller
2002-07-29  6:16               ` Linus Torvalds
2002-07-29  6:10                 ` David S. Miller
2002-07-29  6:27                   ` Linus Torvalds
2002-07-29  6:59                     ` Andrew Morton [this message]
2002-07-30 11:30                     ` Ed Tomlinson
     [not found]                     ` <200208011942.49342.tomlins@cam.org>
     [not found]                       ` <3D49C951.AB7C527E@zip.com.au>
2002-08-03 19:27                         ` [PATCH] slablru for linux-2.5 bk tree Ed Tomlinson
2002-08-03 20:43                           ` Rik van Riel
2002-08-04  3:17                           ` Andrew Morton
2002-07-29  8:35                 ` [patch 2/13] remove pages from the LRU in __free_pages_ok() Rik van Riel
2002-07-29  4:25           ` Andrew Morton
2002-07-29  4:28             ` Linus Torvalds
2002-07-29  4:52               ` Andrew Morton
2002-07-29  4:50                 ` Linus Torvalds
2002-07-29  5:15                   ` Andrew Morton
2002-07-29  4:17         ` Andrew Morton
2002-07-29  4:23           ` Linus Torvalds
2002-07-29  5:43           ` David S. Miller
2002-07-29  6:24           ` Paul Mackerras

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=3D44E7C9.1302DF56@zip.com.au \
    --to=akpm@zip.com.au \
    --cc=davem@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@transmeta.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