From: Johannes Weiner <hannes@cmpxchg.org>
To: Matthew Wilcox <willy@infradead.org>
Cc: Alex Shi <alex.shi@linux.alibaba.com>,
akpm@linux-foundation.org, mgorman@techsingularity.net,
tj@kernel.org, hughd@google.com, khlebnikov@yandex-team.ru,
daniel.m.jordan@oracle.com, lkp@intel.com, linux-mm@kvack.org,
linux-kernel@vger.kernel.org, cgroups@vger.kernel.org,
shakeelb@google.com, iamjoonsoo.kim@lge.com,
richard.weiyang@gmail.com, kirill@shutemov.name,
alexander.duyck@gmail.com, rong.a.chen@intel.com,
mhocko@suse.com, vdavydov.dev@gmail.com, shy828301@gmail.com,
Vlastimil Babka <vbabka@suse.cz>,
Minchan Kim <minchan@kernel.org>
Subject: Re: [PATCH v20 08/20] mm: page_idle_get_page() does not need lru_lock
Date: Mon, 2 Nov 2020 15:20:03 -0500 [thread overview]
Message-ID: <20201102202003.GA740958@cmpxchg.org> (raw)
In-Reply-To: <20201102144927.GN27442@casper.infradead.org>
On Mon, Nov 02, 2020 at 02:49:27PM +0000, Matthew Wilcox wrote:
> On Mon, Nov 02, 2020 at 09:41:10AM -0500, Johannes Weiner wrote:
> > On Thu, Oct 29, 2020 at 06:44:53PM +0800, Alex Shi wrote:
> > > From: Hugh Dickins <hughd@google.com>
> > >
> > > It is necessary for page_idle_get_page() to recheck PageLRU() after
> > > get_page_unless_zero(), but holding lru_lock around that serves no
> > > useful purpose, and adds to lru_lock contention: delete it.
> > >
> > > See https://lore.kernel.org/lkml/20150504031722.GA2768@blaptop for the
> > > discussion that led to lru_lock there; but __page_set_anon_rmap() now
> > > uses WRITE_ONCE(),
> >
> > That doesn't seem to be the case in Linus's or Andrew's tree. Am I
> > missing a dependent patch series?
> >
> > > and I see no other risk in page_idle_clear_pte_refs() using
> > > rmap_walk() (beyond the risk of racing PageAnon->PageKsm, mostly but
> > > not entirely prevented by page_count() check in ksm.c's
> > > write_protect_page(): that risk being shared with page_referenced()
> > > and not helped by lru_lock).
> >
> > Isn't it possible, as per Minchan's description, for page->mapping to
> > point to a struct anon_vma without PAGE_MAPPING_ANON set, and rmap
> > thinking it's looking at a struct address_space?
>
> I don't think it can point to an anon_vma without the ANON bit set.
> Minchan's concern in that email was that it might still be NULL.
Hm, no, the thread is a lengthy discussion about whether the store
could be split such that page->mapping is actually pointing to
something invalid (anon_vma without the PageAnon bit).
From his email:
CPU 0 CPU 1
do_anonymous_page
__page_set_anon_rmap
/* out of order happened so SetPageLRU is done ahead */
SetPageLRU(page)
/* Compilr changed store operation like below */
page->mapping = (struct address_space *) anon_vma;
/* Big stall happens */
/* idletacking judged it as LRU page so pass the page
in page_reference */
page_refernced
page_rmapping return true because
page->mapping has some vaule but not complete
so it calls rmap_walk_file.
it's okay to pass non-completed anon page in rmap_walk_file?
next prev parent reply other threads:[~2020-11-02 20:20 UTC|newest]
Thread overview: 109+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-29 10:44 [PATCH v20 00/20] per memcg lru lock Alex Shi
2020-10-29 10:44 ` Alex Shi
2020-10-29 10:44 ` [PATCH v20 04/20] mm/thp: use head for head page in lru_add_page_tail Alex Shi
[not found] ` <1603968305-8026-5-git-send-email-alex.shi-KPsoFbNs7GizrGE5bRqYAgC/G2K4zDHf@public.gmane.org>
2020-10-29 13:50 ` Johannes Weiner
2020-10-29 13:50 ` Johannes Weiner
[not found] ` <20201029135047.GE599825-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-10-30 2:46 ` Alex Shi
2020-10-30 2:46 ` Alex Shi
[not found] ` <06a5b7d8-bbf2-51b7-1352-2b630186e15f-KPsoFbNs7GizrGE5bRqYAgC/G2K4zDHf@public.gmane.org>
2020-10-30 13:52 ` Johannes Weiner
2020-10-30 13:52 ` Johannes Weiner
2020-10-31 1:14 ` Alex Shi
2020-11-02 16:03 ` Matthew Wilcox
[not found] ` <20201102160357.GP27442-FZi0V3Vbi30CUdFEqe4BF2D2FQJk+8+b@public.gmane.org>
2020-11-03 2:43 ` Alex Shi
2020-11-03 2:43 ` Alex Shi
2020-10-29 10:44 ` [PATCH v20 05/20] mm/thp: Simplify lru_add_page_tail() Alex Shi
2020-10-29 10:44 ` Alex Shi
2020-10-29 14:00 ` Johannes Weiner
2020-10-30 2:48 ` Alex Shi
2020-10-30 2:48 ` Alex Shi
2020-10-29 10:44 ` [PATCH v20 06/20] mm/thp: narrow lru locking Alex Shi
2020-10-29 10:44 ` [PATCH v20 08/20] mm: page_idle_get_page() does not need lru_lock Alex Shi
2020-11-02 14:41 ` Johannes Weiner
[not found] ` <20201102144110.GB724984-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-11-02 14:49 ` Matthew Wilcox
2020-11-02 14:49 ` Matthew Wilcox
2020-11-02 20:20 ` Johannes Weiner [this message]
[not found] ` <20201102202003.GA740958-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-11-04 11:27 ` Alex Shi
2020-11-04 11:27 ` Alex Shi
[not found] ` <b4038b87-cf5a-fcb7-06f4-b98874029615-KPsoFbNs7GizrGE5bRqYAgC/G2K4zDHf@public.gmane.org>
2020-11-04 17:46 ` Johannes Weiner
2020-11-04 17:46 ` Johannes Weiner
2020-11-05 4:52 ` Alex Shi
[not found] ` <6eea82d8-e406-06ee-2333-eb6e2f1944e5-KPsoFbNs7GizrGE5bRqYAgC/G2K4zDHf@public.gmane.org>
2020-11-05 4:57 ` Matthew Wilcox
2020-11-05 4:57 ` Matthew Wilcox
2020-11-05 5:03 ` Alex Shi
2020-11-05 5:03 ` Alex Shi
[not found] ` <1e8f0162-cf2e-03eb-e7e0-ccc9f6a3eaf2-KPsoFbNs7GizrGE5bRqYAgC/G2K4zDHf@public.gmane.org>
2020-11-05 15:36 ` Johannes Weiner
2020-11-05 15:36 ` Johannes Weiner
[not found] ` <20201105153649.GC744831-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-11-05 15:43 ` Matthew Wilcox
2020-11-05 15:43 ` Matthew Wilcox
2020-11-06 1:11 ` Alex Shi
2020-11-06 1:11 ` Alex Shi
2020-11-11 7:27 ` Hugh Dickins
2020-10-29 10:44 ` [PATCH v20 09/20] mm/memcg: add debug checking in lock_page_memcg Alex Shi
[not found] ` <1603968305-8026-10-git-send-email-alex.shi-KPsoFbNs7GizrGE5bRqYAgC/G2K4zDHf@public.gmane.org>
2020-11-02 14:45 ` Johannes Weiner
2020-11-02 14:45 ` Johannes Weiner
2020-10-29 10:44 ` [PATCH v20 11/20] mm/lru: move lock into lru_note_cost Alex Shi
[not found] ` <1603968305-8026-12-git-send-email-alex.shi-KPsoFbNs7GizrGE5bRqYAgC/G2K4zDHf@public.gmane.org>
2020-10-29 13:42 ` Johannes Weiner
2020-10-29 13:42 ` Johannes Weiner
2020-10-29 10:44 ` [PATCH v20 13/20] mm/mlock: remove lru_lock on TestClearPageMlocked Alex Shi
[not found] ` <1603968305-8026-14-git-send-email-alex.shi-KPsoFbNs7GizrGE5bRqYAgC/G2K4zDHf@public.gmane.org>
2020-11-02 14:55 ` Johannes Weiner
2020-11-02 14:55 ` Johannes Weiner
[not found] ` <1603968305-8026-1-git-send-email-alex.shi-KPsoFbNs7GizrGE5bRqYAgC/G2K4zDHf@public.gmane.org>
2020-10-29 10:44 ` [PATCH v20 01/20] mm/memcg: warning on !memcg after readahead page charged Alex Shi
2020-10-29 10:44 ` Alex Shi
2020-10-29 13:43 ` Johannes Weiner
2020-10-29 10:44 ` [PATCH v20 02/20] mm/memcg: bail early from swap accounting if memcg disabled Alex Shi
2020-10-29 10:44 ` Alex Shi
2020-10-29 13:46 ` Johannes Weiner
2020-10-30 2:27 ` Alex Shi
2020-10-30 2:27 ` Alex Shi
[not found] ` <96b6d122-df0e-dfb0-368c-6bd714fab116-KPsoFbNs7GizrGE5bRqYAgC/G2K4zDHf@public.gmane.org>
2020-10-30 14:04 ` Johannes Weiner
2020-10-30 14:04 ` Johannes Weiner
[not found] ` <20201030140420.GB666074-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-10-31 1:13 ` Alex Shi
2020-10-31 1:13 ` Alex Shi
2020-10-29 10:44 ` [PATCH v20 03/20] mm/thp: move lru_add_page_tail func to huge_memory.c Alex Shi
2020-10-29 10:44 ` Alex Shi
2020-10-29 13:47 ` Johannes Weiner
2020-10-29 10:44 ` [PATCH v20 07/20] mm/vmscan: remove unnecessary lruvec adding Alex Shi
2020-10-29 10:44 ` Alex Shi
2020-11-02 14:20 ` Johannes Weiner
2020-10-29 10:44 ` [PATCH v20 10/20] mm/swap.c: fold vm event PGROTATED into pagevec_move_tail_fn Alex Shi
2020-10-29 10:44 ` Alex Shi
2020-11-02 14:48 ` Johannes Weiner
2020-10-29 10:44 ` [PATCH v20 12/20] mm/vmscan: remove lruvec reget in move_pages_to_lru Alex Shi
2020-10-29 10:44 ` Alex Shi
[not found] ` <1603968305-8026-13-git-send-email-alex.shi-KPsoFbNs7GizrGE5bRqYAgC/G2K4zDHf@public.gmane.org>
2020-11-02 14:52 ` Johannes Weiner
2020-11-02 14:52 ` Johannes Weiner
[not found] ` <20201102145220.GE724984-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-11-03 2:51 ` Alex Shi
2020-11-03 2:51 ` Alex Shi
2020-10-29 10:44 ` [PATCH v20 14/20] mm/mlock: remove __munlock_isolate_lru_page Alex Shi
2020-10-29 10:44 ` Alex Shi
[not found] ` <1603968305-8026-15-git-send-email-alex.shi-KPsoFbNs7GizrGE5bRqYAgC/G2K4zDHf@public.gmane.org>
2020-11-02 14:56 ` Johannes Weiner
2020-11-02 14:56 ` Johannes Weiner
2020-10-29 10:45 ` [PATCH v20 15/20] mm/lru: introduce TestClearPageLRU Alex Shi
2020-10-29 10:45 ` Alex Shi
2020-11-02 15:10 ` Johannes Weiner
2020-11-03 3:02 ` Alex Shi
2020-11-03 3:02 ` Alex Shi
2020-10-29 10:45 ` [PATCH v20 16/20] mm/compaction: do page isolation first in compaction Alex Shi
2020-10-29 10:45 ` Alex Shi
[not found] ` <1603968305-8026-17-git-send-email-alex.shi-KPsoFbNs7GizrGE5bRqYAgC/G2K4zDHf@public.gmane.org>
2020-11-02 15:18 ` Johannes Weiner
2020-11-02 15:18 ` Johannes Weiner
2020-11-04 11:55 ` [PATCH v20 00/20] per memcg lru lock Alex Shi
2020-11-04 11:55 ` Alex Shi
[not found] ` <811216d4-4972-4721-d6b9-1028c02f4290-KPsoFbNs7GizrGE5bRqYAgC/G2K4zDHf@public.gmane.org>
2020-11-04 16:59 ` Johannes Weiner
2020-11-04 16:59 ` Johannes Weiner
[not found] ` <20201104165935.GA744831-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-11-05 5:07 ` Alex Shi
2020-11-05 5:07 ` Alex Shi
2020-10-29 10:45 ` [PATCH v20 17/20] mm/swap.c: serialize memcg changes in pagevec_lru_move_fn Alex Shi
[not found] ` <1603968305-8026-18-git-send-email-alex.shi-KPsoFbNs7GizrGE5bRqYAgC/G2K4zDHf@public.gmane.org>
2020-11-02 15:20 ` Johannes Weiner
2020-11-02 15:20 ` Johannes Weiner
2020-10-29 10:45 ` [PATCH v20 18/20] mm/lru: replace pgdat lru_lock with lruvec lock Alex Shi
2020-10-30 2:49 ` Alex Shi
[not found] ` <ef279dfe-afa5-45cb-4013-6c34169ff55e-KPsoFbNs7GizrGE5bRqYAgC/G2K4zDHf@public.gmane.org>
2020-11-02 20:41 ` Johannes Weiner
2020-11-02 20:41 ` Johannes Weiner
2020-11-03 4:58 ` Alex Shi
2020-11-03 4:58 ` Alex Shi
2020-10-29 10:45 ` [PATCH v20 19/20] mm/lru: introduce the relock_page_lruvec function Alex Shi
[not found] ` <1603968305-8026-20-git-send-email-alex.shi-KPsoFbNs7GizrGE5bRqYAgC/G2K4zDHf@public.gmane.org>
2020-11-02 20:44 ` Johannes Weiner
2020-11-02 20:44 ` Johannes Weiner
2020-10-29 10:45 ` [PATCH v20 20/20] mm/lru: revise the comments of lru_lock Alex Shi
2020-11-02 20:46 ` Johannes Weiner
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=20201102202003.GA740958@cmpxchg.org \
--to=hannes@cmpxchg.org \
--cc=akpm@linux-foundation.org \
--cc=alex.shi@linux.alibaba.com \
--cc=alexander.duyck@gmail.com \
--cc=cgroups@vger.kernel.org \
--cc=daniel.m.jordan@oracle.com \
--cc=hughd@google.com \
--cc=iamjoonsoo.kim@lge.com \
--cc=khlebnikov@yandex-team.ru \
--cc=kirill@shutemov.name \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lkp@intel.com \
--cc=mgorman@techsingularity.net \
--cc=mhocko@suse.com \
--cc=minchan@kernel.org \
--cc=richard.weiyang@gmail.com \
--cc=rong.a.chen@intel.com \
--cc=shakeelb@google.com \
--cc=shy828301@gmail.com \
--cc=tj@kernel.org \
--cc=vbabka@suse.cz \
--cc=vdavydov.dev@gmail.com \
--cc=willy@infradead.org \
/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.