From: Johannes Weiner <hannes@cmpxchg.org>
To: Jaegeuk Hanse <jaegeuk.hanse@gmail.com>
Cc: Jan Kara <jack@suse.cz>, metin d <metdos@yahoo.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
linux-mm@kvack.org
Subject: Re: Problem in Page Cache Replacement
Date: Wed, 21 Nov 2012 20:09:59 -0500 [thread overview]
Message-ID: <20121122010959.GF24381@cmpxchg.org> (raw)
In-Reply-To: <50AD7647.7050200@gmail.com>
On Thu, Nov 22, 2012 at 08:48:07AM +0800, Jaegeuk Hanse wrote:
> On 11/22/2012 05:34 AM, Johannes Weiner wrote:
> >Hi,
> >
> >On Tue, Nov 20, 2012 at 07:25:00PM +0100, Jan Kara wrote:
> >>On Tue 20-11-12 09:42:42, metin d wrote:
> >>>I have two PostgreSQL databases named data-1 and data-2 that sit on the
> >>>same machine. Both databases keep 40 GB of data, and the total memory
> >>>available on the machine is 68GB.
> >>>
> >>>I started data-1 and data-2, and ran several queries to go over all their
> >>>data. Then, I shut down data-1 and kept issuing queries against data-2.
> >>>For some reason, the OS still holds on to large parts of data-1's pages
> >>>in its page cache, and reserves about 35 GB of RAM to data-2's files. As
> >>>a result, my queries on data-2 keep hitting disk.
> >>>
> >>>I'm checking page cache usage with fincore. When I run a table scan query
> >>>against data-2, I see that data-2's pages get evicted and put back into
> >>>the cache in a round-robin manner. Nothing happens to data-1's pages,
> >>>although they haven't been touched for days.
> >>>
> >>>Does anybody know why data-1's pages aren't evicted from the page cache?
> >>>I'm open to all kind of suggestions you think it might relate to problem.
> >This might be because we do not deactive pages as long as there is
> >cache on the inactive list. I'm guessing that the inter-reference
> >distance of data-2 is bigger than half of memory, so it's never
> >getting activated and data-1 is never challenged.
>
> Hi Johannes,
>
> What's the meaning of "inter-reference distance"
It's the number of memory accesses between two accesses to the same
page:
A B C D A B C E ...
|_______|
| |
> and why compare it with half of memoy, what's the trick?
If B gets accessed twice, it gets activated. If it gets evicted in
between, the second access will be a fresh page fault and B will not
be recognized as frequently used.
Our cutoff for scanning the active list is cache size / 2 right now
(inactive_file_is_low), leaving 50% of memory to the inactive list.
If the inter-reference distance for pages on the inactive list is
bigger than that, they get evicted before their second access.
--
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/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: Johannes Weiner <hannes@cmpxchg.org>
To: Jaegeuk Hanse <jaegeuk.hanse@gmail.com>
Cc: Jan Kara <jack@suse.cz>, metin d <metdos@yahoo.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
linux-mm@kvack.org
Subject: Re: Problem in Page Cache Replacement
Date: Wed, 21 Nov 2012 20:09:59 -0500 [thread overview]
Message-ID: <20121122010959.GF24381@cmpxchg.org> (raw)
In-Reply-To: <50AD7647.7050200@gmail.com>
On Thu, Nov 22, 2012 at 08:48:07AM +0800, Jaegeuk Hanse wrote:
> On 11/22/2012 05:34 AM, Johannes Weiner wrote:
> >Hi,
> >
> >On Tue, Nov 20, 2012 at 07:25:00PM +0100, Jan Kara wrote:
> >>On Tue 20-11-12 09:42:42, metin d wrote:
> >>>I have two PostgreSQL databases named data-1 and data-2 that sit on the
> >>>same machine. Both databases keep 40 GB of data, and the total memory
> >>>available on the machine is 68GB.
> >>>
> >>>I started data-1 and data-2, and ran several queries to go over all their
> >>>data. Then, I shut down data-1 and kept issuing queries against data-2.
> >>>For some reason, the OS still holds on to large parts of data-1's pages
> >>>in its page cache, and reserves about 35 GB of RAM to data-2's files. As
> >>>a result, my queries on data-2 keep hitting disk.
> >>>
> >>>I'm checking page cache usage with fincore. When I run a table scan query
> >>>against data-2, I see that data-2's pages get evicted and put back into
> >>>the cache in a round-robin manner. Nothing happens to data-1's pages,
> >>>although they haven't been touched for days.
> >>>
> >>>Does anybody know why data-1's pages aren't evicted from the page cache?
> >>>I'm open to all kind of suggestions you think it might relate to problem.
> >This might be because we do not deactive pages as long as there is
> >cache on the inactive list. I'm guessing that the inter-reference
> >distance of data-2 is bigger than half of memory, so it's never
> >getting activated and data-1 is never challenged.
>
> Hi Johannes,
>
> What's the meaning of "inter-reference distance"
It's the number of memory accesses between two accesses to the same
page:
A B C D A B C E ...
|_______|
| |
> and why compare it with half of memoy, what's the trick?
If B gets accessed twice, it gets activated. If it gets evicted in
between, the second access will be a fresh page fault and B will not
be recognized as frequently used.
Our cutoff for scanning the active list is cache size / 2 right now
(inactive_file_is_low), leaving 50% of memory to the inactive list.
If the inter-reference distance for pages on the inactive list is
bigger than that, they get evicted before their second access.
next prev parent reply other threads:[~2012-11-22 1:10 UTC|newest]
Thread overview: 60+ 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-20 18:25 ` Jan Kara
2012-11-21 8:03 ` metin d
2012-11-21 8:03 ` metin d
2012-11-21 8:13 ` metin d
2012-11-21 8:13 ` metin d
2012-11-21 8:34 ` Jaegeuk Hanse
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:10 ` Fengguang Wu
2012-11-21 9:42 ` Jaegeuk Hanse
2012-11-21 9:42 ` Jaegeuk Hanse
2012-11-21 9:58 ` metin d
2012-11-21 10:00 ` Jaegeuk Hanse
2012-11-21 10:07 ` Metin Döşlü
2012-11-21 10:07 ` Metin Döşlü
2012-11-22 15:41 ` Fengguang Wu
2012-11-22 15:41 ` Fengguang Wu
2012-11-22 15:53 ` Fengguang Wu
2012-11-22 15:53 ` Fengguang Wu
2012-11-23 2:10 ` Jaegeuk Hanse
2012-11-23 2:10 ` Jaegeuk Hanse
2012-11-25 20:08 ` Rik van Riel
2012-11-25 20:08 ` Rik van Riel
2012-11-24 15:06 ` Metin Döşlü
2012-11-24 15:06 ` Metin Döşlü
2012-11-21 10:00 ` metin d
2012-11-22 15:26 ` Fengguang Wu
2012-11-22 15:26 ` Fengguang Wu
2012-11-23 1:32 ` Jaegeuk Hanse
2012-11-23 1:32 ` Jaegeuk Hanse
2012-11-23 2:25 ` Fengguang Wu
2012-11-23 2:25 ` Fengguang Wu
[not found] ` <50ACA166.70705@gmail.com>
2012-11-22 13:00 ` Jaegeuk Hanse
2012-11-21 21:34 ` Johannes Weiner
2012-11-21 21:34 ` Johannes Weiner
2012-11-21 22:01 ` metin d
2012-11-21 22:01 ` metin d
2012-11-22 0:48 ` Jaegeuk Hanse
2012-11-22 0:48 ` Jaegeuk Hanse
2012-11-22 1:09 ` Johannes Weiner [this message]
2012-11-22 1:09 ` Johannes Weiner
2012-11-22 9:37 ` metin d
2012-11-22 9:37 ` metin d
2012-11-22 13:16 ` Jaegeuk Hanse
2012-11-22 13:16 ` Jaegeuk Hanse
2012-11-22 16:17 ` Johannes Weiner
2012-11-22 16:17 ` Johannes Weiner
2012-11-23 2:14 ` Jaegeuk Hanse
2012-11-23 2:14 ` Jaegeuk Hanse
2012-11-23 1:58 ` Jaegeuk Hanse
2012-11-23 1:58 ` Jaegeuk Hanse
2012-11-23 8:08 ` metin d
2012-11-23 8:08 ` metin d
2012-11-23 8:17 ` Jaegeuk Hanse
2012-11-23 8:17 ` Jaegeuk Hanse
2012-11-23 8:25 ` metin d
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=20121122010959.GF24381@cmpxchg.org \
--to=hannes@cmpxchg.org \
--cc=jack@suse.cz \
--cc=jaegeuk.hanse@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=metdos@yahoo.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.