From: Minchan Kim <minchan@kernel.org>
To: Jan Kara <jack@suse.cz>
Cc: Andrew Morton <akpm@linux-foundation.org>,
linux-mm <linux-mm@kvack.org>, Josef Bacik <josef@toxicpanda.com>,
Johannes Weiner <hannes@cmpxchg.org>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] mm: fix long time stall from mm_populate
Date: Wed, 12 Feb 2020 09:43:28 -0800 [thread overview]
Message-ID: <20200212174328.GC93795@google.com> (raw)
In-Reply-To: <20200212102206.GE25573@quack2.suse.cz>
On Wed, Feb 12, 2020 at 11:22:06AM +0100, Jan Kara wrote:
> On Mon 10-02-20 16:19:58, Minchan Kim wrote:
> > Basically, fault handler releases mmap_sem before requesting readahead
> > and then it is supposed to retry lookup the page from page cache with
> > FAULT_FLAG_TRIED so that it avoids the live lock of infinite retry.
> >
> > However, what happens if the fault handler find a page from page
> > cache and the page has readahead marker but are waiting under
> > writeback? Plus one more condition, it happens under mm_populate
> > which repeats faulting unless it encounters error. So let's assemble
> > conditions below.
> >
> > __mm_populate
> > for (...)
> > get_user_pages(faluty_address)
> > handle_mm_fault
> > filemap_fault
> > find a page form page(PG_uptodate|PG_readahead|PG_writeback)
> > it will return VM_FAULT_RETRY
> > continue with faulty_address
> >
> > IOW, it will repeat fault retry logic until the page will be written
> > back in the long run. It makes big spike latency of several seconds.
> >
> > This patch solves the issue by turning off fault retry logic in second
> > trial.
> >
> > Signed-off-by: Minchan Kim <minchan@kernel.org>
> > ---
> > It was orignated from code review once I have seen several user reports
> > but didn't confirm yet it's the root cause.
>
> Yes, I think the immediate problem is actually elsewhere but I agree that
> __mm_populate() should follow the general protocol of retrying only once
> so your change should make it more robust. The patch looks good to me, you
> can add:
>
> Reviewed-by: Jan Kara <jack@suse.cz>
Thanks for the review!
prev parent reply other threads:[~2020-02-12 17:43 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-11 0:19 [PATCH] mm: fix long time stall from mm_populate Minchan Kim
2020-02-11 1:10 ` Matthew Wilcox
2020-02-11 3:50 ` Minchan Kim
2020-02-11 3:54 ` Matthew Wilcox
2020-02-11 4:25 ` Minchan Kim
2020-02-11 12:23 ` Matthew Wilcox
2020-02-11 16:34 ` Minchan Kim
2020-02-11 17:28 ` Matthew Wilcox
2020-02-11 17:57 ` Minchan Kim
2020-02-12 10:18 ` Jan Kara
2020-02-12 17:40 ` Minchan Kim
2020-02-12 18:28 ` Matthew Wilcox
2020-02-12 19:53 ` Minchan Kim
2020-02-12 22:24 ` Andrew Morton
2020-02-12 23:12 ` Minchan Kim
2020-02-13 2:00 ` Andrew Morton
2020-02-13 17:24 ` Minchan Kim
2020-02-11 18:14 ` Yang Shi
2020-02-12 10:22 ` Jan Kara
2020-02-12 17:43 ` Minchan Kim [this message]
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=20200212174328.GC93795@google.com \
--to=minchan@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=hannes@cmpxchg.org \
--cc=jack@suse.cz \
--cc=josef@toxicpanda.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.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.