linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Rik van Riel <riel@redhat.com>
To: Fengguang Wu <fengguang.wu@intel.com>
Cc: "Metin Döşlü" <metindoslu@gmail.com>,
	"Jaegeuk Hanse" <jaegeuk.hanse@gmail.com>,
	"Jan Kara" <jack@suse.cz>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>,
	"Johannes Weiner" <jweiner@redhat.com>
Subject: Re: Problem in Page Cache Replacement
Date: Sun, 25 Nov 2012 15:08:49 -0500	[thread overview]
Message-ID: <50B27AD1.6010703@redhat.com> (raw)
In-Reply-To: <20121122155318.GA12636@localhost>

On 11/22/2012 10:53 AM, Fengguang Wu wrote:

> Ah it's more likely caused by this logic:
>
>          if (is_active_lru(lru)) {
>                  if (inactive_list_is_low(mz, file))
>                          shrink_active_list(nr_to_scan, mz, sc, priority, file);
>
> The active file list won't be scanned at all if it's smaller than the
> active list. In this case, it's inactive=33586MB > active=25719MB. So
> the data-1 pages in the active list will never be scanned and reclaimed.

That's it, indeed.

The reason we have that code is that otherwise one large streaming
IO could easily end up evicting the entire page cache working set.

Usually it works well, because the new page cache working set tends
to get touched twice while on the inactive list, and the old working
set gets demoted from the active list.

Only in a few very specific cases, where the inter-reference distance
of the new working set is larger than the size of the inactive list,
does it fail.

Something like Johannes's patches should solve the problem.

-- 
All rights reversed

  parent reply	other threads:[~2012-11-25 20:09 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-20 17:42 Problem in Page Cache Replacement metin d
2012-11-20 18:25 ` Jan Kara
2012-11-21  8:03   ` metin d
2012-11-21  8:13     ` metin d
2012-11-21  8:34       ` Jaegeuk Hanse
2012-11-21  9:02         ` Fengguang Wu
2012-11-21  9:10           ` Fengguang Wu
2012-11-21  9:42           ` Jaegeuk Hanse
2012-11-21 10:00             ` metin d
     [not found]             ` <1353491880.11679.YahooMailNeo@web141102.mail.bf1.yahoo.com>
     [not found]               ` <50ACA634.5000007@gmail.com>
2012-11-21 10:07                 ` Metin Döşlü
2012-11-22 15:41                   ` Fengguang Wu
2012-11-22 15:53                     ` Fengguang Wu
2012-11-23  2:10                       ` Jaegeuk Hanse
2012-11-25 20:08                       ` Rik van Riel [this message]
2012-11-24 15:06                     ` Metin Döşlü
2012-11-22 15:26             ` Fengguang Wu
2012-11-23  1:32               ` Jaegeuk Hanse
2012-11-23  2:25                 ` Fengguang Wu
2012-11-21 21:34   ` Johannes Weiner
2012-11-21 22:01     ` metin d
2012-11-22  0:48     ` Jaegeuk Hanse
2012-11-22  1:09       ` Johannes Weiner
2012-11-22  9:37         ` metin d
2012-11-22 13:16         ` Jaegeuk Hanse
2012-11-22 16:17           ` Johannes Weiner
2012-11-23  2:14             ` Jaegeuk Hanse
2012-11-23  1:58   ` Jaegeuk Hanse
2012-11-23  8:08     ` metin d
2012-11-23  8:17       ` Jaegeuk Hanse
2012-11-23  8:25         ` metin d

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=50B27AD1.6010703@redhat.com \
    --to=riel@redhat.com \
    --cc=fengguang.wu@intel.com \
    --cc=jack@suse.cz \
    --cc=jaegeuk.hanse@gmail.com \
    --cc=jweiner@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=metindoslu@gmail.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;
as well as URLs for NNTP newsgroup(s).