From: Joonsoo Kim <js1304@gmail.com>
To: Johannes Weiner <hannes@cmpxchg.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Linux Memory Management List <linux-mm@kvack.org>,
LKML <linux-kernel@vger.kernel.org>,
Michal Hocko <mhocko@kernel.org>,
Hugh Dickins <hughd@google.com>, Minchan Kim <minchan@kernel.org>,
Vlastimil Babka <vbabka@suse.cz>,
Mel Gorman <mgorman@techsingularity.net>,
kernel-team@lge.com, Joonsoo Kim <iamjoonsoo.kim@lge.com>
Subject: Re: [PATCH v2 2/9] mm/vmscan: protect the workingset on anonymous LRU
Date: Tue, 17 Mar 2020 13:52:40 +0900 [thread overview]
Message-ID: <CAAmzW4NZ1vBPFDv7CkbCXBjyNbT1HKHEJo1Np-Uop0kf+buN8w@mail.gmail.com> (raw)
In-Reply-To: <20200316161208.GB67986@cmpxchg.org>
2020년 3월 17일 (화) 오전 1:12, Johannes Weiner <hannes@cmpxchg.org>님이 작성:
>
> On Mon, Mar 16, 2020 at 04:05:30PM +0900, Joonsoo Kim wrote:
> > 2020년 3월 14일 (토) 오전 4:55, Johannes Weiner <hannes@cmpxchg.org>님이 작성:
> > > The problem with executables is that when they are referenced, they
> > > get a *lot* of references compared to data pages. Think about an
> > > instruction stream and how many of those instructions result in data
> > > references. So when you see an executable page that is being accessed,
> > > it's likely being accessed at a high rate. They're much hotter, and
> > > that's why reference bits from VM_EXEC mappings carry more weight.
> >
> > Sound reasonable.
> >
> > But, now, I have another thought about it. I think that the root of the reason
> > of this check is that there are two different reference tracking models
> > on file LRU. If we assume that all file pages are mapped ones, this special
> > check isn't needed. If executable pages are accessed more frequently than
> > others, reference can be found more for them at LRU cycle. No need for this
> > special check.
> >
> > However, file pages includes syscall-ed pages and mapped pages, and,
> > reference tracking models for mapped page has a disadvantage to
> > one for syscall-ed page. Several references for mapped page would be
> > considered as one at LRU cycle. I think that this check is to mitigate
> > this disadvantage, at least, for executable file mapped page.
>
> Hm, I don't quite understand this reasoning. Yes, there are two models
> for unmapped and mapped file pages. But both types of pages get
> activated with two or more references: for unmapped it's tracked
> through mark_page_accessed(), and for mapped it's the two LRU cycles
> with the referenced bit set (unmapped pages don't get that extra trip
> around the LRU with one reference). With that alone, mapped pages and
> unmapped pages should have equal chances, no?
>
Think about following example.
Assume that the size of inactive list for file page is 100.
1. start the new page, A, and access to A happens
2. 50 inactive pages are reclaimed due to 50 new pages
3. second access to A happens
4. 50 inactive pages are reclaimed due to 50 new pages
5. 100 inactive pages are reclaimed due to 100 new pages
If A is:
unmapped page: the page is activated at #3 and lives after #5
mapped page: the page reference is checked at #4 and re-attached
to the inactive list with PageReferenced() but is eventually reclaimed at #5
Even they are referenced by the same pattern, mapped page is reclaimed
but unmapped isn't. This is, what I said before, the disadvantage of
the mapped page than unmapped page. My guess is that to mitigate this
disadvantage on mapped file page, VM_EXEC test is needed since
VM_EXEC is the most important case for mapped file page.
Thanks.
next prev parent reply other threads:[~2020-03-17 4:52 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-20 5:11 [PATCH v2 0/9] workingset protection/detection on the anonymous LRU list js1304
2020-02-20 5:11 ` [PATCH v2 1/9] mm/vmscan: make active/inactive ratio as 1:1 for anon lru js1304
2020-03-12 14:47 ` Johannes Weiner
2020-03-13 5:48 ` Joonsoo Kim
2020-02-20 5:11 ` [PATCH v2 2/9] mm/vmscan: protect the workingset on anonymous LRU js1304
2020-03-12 15:14 ` Johannes Weiner
2020-03-13 7:40 ` Joonsoo Kim
2020-03-13 19:55 ` Johannes Weiner
2020-03-16 7:05 ` Joonsoo Kim
2020-03-16 16:12 ` Johannes Weiner
2020-03-17 4:52 ` Joonsoo Kim [this message]
2020-02-20 5:11 ` [PATCH v2 3/9] mm/workingset: extend the workingset detection for anon LRU js1304
2020-02-20 5:11 ` [PATCH v2 4/9] mm/swapcache: support to handle the value in swapcache js1304
2020-02-20 5:11 ` [PATCH v2 5/9] mm/workingset: use the node counter if memcg is the root memcg js1304
2020-02-20 5:11 ` [PATCH v2 6/9] mm/workingset: handle the page without memcg js1304
2020-02-20 5:11 ` [PATCH v2 7/9] mm/swap: implement workingset detection for anonymous LRU js1304
2020-02-20 5:11 ` [PATCH v2 8/9] mm/vmscan: restore active/inactive ratio " js1304
2020-02-20 5:11 ` [PATCH v2 9/9] mm/swap: count a new anonymous page as a reclaim_state's rotate js1304
2020-02-27 3:39 ` [PATCH v2 0/9] workingset protection/detection on the anonymous LRU list Andrew Morton
2020-02-27 7:48 ` Joonsoo Kim
2020-03-01 4:40 ` Andrew Morton
2020-02-27 13:48 ` Johannes Weiner
2020-02-27 23:36 ` Andrew Morton
2020-03-02 23:31 ` Joonsoo Kim
2020-03-11 7:27 ` Joonsoo Kim
2020-02-28 3:23 ` Aaron Lu
2020-02-28 4:03 ` Joonsoo Kim
2020-02-28 5:57 ` Aaron Lu
2020-02-28 6:52 ` Joonsoo Kim
2020-02-28 9:17 ` Aaron Lu
2020-02-28 9:56 ` Joonsoo Kim
2020-02-28 10:21 ` Aaron Lu
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=CAAmzW4NZ1vBPFDv7CkbCXBjyNbT1HKHEJo1Np-Uop0kf+buN8w@mail.gmail.com \
--to=js1304@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=hannes@cmpxchg.org \
--cc=hughd@google.com \
--cc=iamjoonsoo.kim@lge.com \
--cc=kernel-team@lge.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mgorman@techsingularity.net \
--cc=mhocko@kernel.org \
--cc=minchan@kernel.org \
--cc=vbabka@suse.cz \
/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