From: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
To: Yosry Ahmed <yosryahmed@google.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
"Matthew Wilcox (Oracle)" <willy@infradead.org>,
Jens Axboe <axboe@kernel.dk>,
"Jason A. Donenfeld" <Jason@zx2c4.com>,
Andi Shyti <andi.shyti@linux.intel.com>,
Chengming Zhou <chengming.zhou@linux.dev>,
Christian Brauner <brauner@kernel.org>,
Christophe Leroy <christophe.leroy@csgroup.eu>,
Dan Carpenter <dan.carpenter@linaro.org>,
David Airlie <airlied@gmail.com>,
David Hildenbrand <david@redhat.com>, Hao Ge <gehao@kylinos.cn>,
Jani Nikula <jani.nikula@linux.intel.com>,
Johannes Weiner <hannes@cmpxchg.org>,
Joonas Lahtinen <joonas.lahtinen@linux.intel.com>,
Josef Bacik <josef@toxicpanda.com>,
Masami Hiramatsu <mhiramat@kernel.org>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Miklos Szeredi <miklos@szeredi.hu>,
Nhat Pham <nphamcs@gmail.com>,
Oscar Salvador <osalvador@suse.de>,
Ran Xiaokai <ran.xiaokai@zte.com.cn>,
Rodrigo Vivi <rodrigo.vivi@intel.com>,
Simona Vetter <simona@ffwll.ch>,
Steven Rostedt <rostedt@goodmis.org>,
Tvrtko Ursulin <tursulin@ursulin.net>,
Vlastimil Babka <vbabka@suse.cz>, Yu Zhao <yuzhao@google.com>,
intel-gfx@lists.freedesktop.org,
dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
linux-fsdevel@vger.kernel.org, linux-mm@kvack.org,
linux-trace-kernel@vger.kernel.org
Subject: Re: [PATCH 4/8] mm/swap: Use PG_dropbehind instead of PG_reclaim
Date: Tue, 14 Jan 2025 10:12:03 +0200 [thread overview]
Message-ID: <sct6vvupd4cp6xt66nn6sfs7w3srpx6zcxxsn6rz5qo4tz3la6@btdqsbicmrto> (raw)
In-Reply-To: <CAJD7tkYH8KO8NLJY564PRAmW-mtMfDCMTECGKyYyVAf+JtTcRA@mail.gmail.com>
On Mon, Jan 13, 2025 at 08:17:20AM -0800, Yosry Ahmed wrote:
> On Mon, Jan 13, 2025 at 1:35 AM Kirill A. Shutemov
> <kirill.shutemov@linux.intel.com> wrote:
> >
> > The recently introduced PG_dropbehind allows for freeing folios
> > immediately after writeback. Unlike PG_reclaim, it does not need vmscan
> > to be involved to get the folio freed.
> >
> > Instead of using folio_set_reclaim(), use folio_set_dropbehind() in
> > lru_deactivate_file().
> >
> > Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
> > ---
> > mm/swap.c | 8 +-------
> > 1 file changed, 1 insertion(+), 7 deletions(-)
> >
> > diff --git a/mm/swap.c b/mm/swap.c
> > index fc8281ef4241..4eb33b4804a8 100644
> > --- a/mm/swap.c
> > +++ b/mm/swap.c
> > @@ -562,14 +562,8 @@ static void lru_deactivate_file(struct lruvec *lruvec, struct folio *folio)
> > folio_clear_referenced(folio);
> >
> > if (folio_test_writeback(folio) || folio_test_dirty(folio)) {
> > - /*
> > - * Setting the reclaim flag could race with
> > - * folio_end_writeback() and confuse readahead. But the
> > - * race window is _really_ small and it's not a critical
> > - * problem.
> > - */
> > lruvec_add_folio(lruvec, folio);
> > - folio_set_reclaim(folio);
> > + folio_set_dropbehind(folio);
> > } else {
> > /*
> > * The folio's writeback ended while it was in the batch.
>
> Now there's a difference in behavior here depending on whether or not
> the folio is under writeback (or will be written back soon). If it is,
> we set PG_dropbehind to get it freed right after, but if writeback has
> already ended we put it on the tail of the LRU to be freed later.
>
> It's a bit counterintuitive to me that folios with pending writeback
> get freed faster than folios that completed their writeback already.
> Am I missing something?
Yeah, it is strange.
I think we can drop the writeback/dirty check. Set PG_dropbehind and put
the page on the tail of LRU unconditionally. The check was required to
avoid confusion with PG_readahead.
Comment above the function is not valid anymore.
But the folio that is still dirty under writeback will be freed faster as
we get rid of the folio just after writeback is done while clean page can
dangle on LRU for a while.
I don't think we have any convenient place to free clean dropbehind page
other than shrink_folio_list(). Or do we?
Looking at shrink_folio_list(), I think we need to bypass page demotion
for PG_dropbehind pages.
--
Kiryl Shutsemau / Kirill A. Shutemov
next prev parent reply other threads:[~2025-01-14 8:12 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20250113093453.1932083-1-kirill.shutemov@linux.intel.com>
[not found] ` <20250113093453.1932083-2-kirill.shutemov@linux.intel.com>
2025-01-13 10:05 ` [PATCH 1/8] drm/i915/gem: Convert __shmem_writeback() to folios David Hildenbrand
[not found] ` <20250113093453.1932083-3-kirill.shutemov@linux.intel.com>
2025-01-13 10:06 ` [PATCH 2/8] drm/i915/gem: Use PG_dropbehind instead of PG_reclaim David Hildenbrand
[not found] ` <20250113093453.1932083-6-kirill.shutemov@linux.intel.com>
2025-01-13 10:07 ` [PATCH 5/8] mm/vmscan: " David Hildenbrand
[not found] ` <20250113093453.1932083-7-kirill.shutemov@linux.intel.com>
2025-01-13 10:08 ` [PATCH 6/8] mm/vmscan: Use PG_dropbehind instead of PG_reclaim in shrink_folio_list() David Hildenbrand
[not found] ` <20250113093453.1932083-8-kirill.shutemov@linux.intel.com>
2025-01-13 10:09 ` [PATCH 7/8] mm/mglru: Check PG_dropcache instead of PG_reclaim in lru_gen_folio_seq() David Hildenbrand
[not found] ` <20250113093453.1932083-9-kirill.shutemov@linux.intel.com>
2025-01-13 10:11 ` [PATCH 8/8] mm: Remove PG_reclaim David Hildenbrand
2025-01-13 15:28 ` Matthew Wilcox
2025-01-14 8:30 ` Kirill A. Shutemov
2025-01-14 17:01 ` Yu Zhao
2025-01-13 13:45 ` [PATCH 0/8] " Matthew Wilcox
2025-01-13 14:07 ` Kirill A. Shutemov
[not found] ` <20250113093453.1932083-4-kirill.shutemov@linux.intel.com>
2025-01-13 10:06 ` [PATCH 3/8] mm/zswap: Use PG_dropbehind instead of PG_reclaim David Hildenbrand
2025-01-13 16:10 ` Yosry Ahmed
[not found] ` <20250113093453.1932083-5-kirill.shutemov@linux.intel.com>
2025-01-13 10:07 ` [PATCH 4/8] mm/swap: " David Hildenbrand
2025-01-13 16:17 ` Yosry Ahmed
2025-01-14 8:12 ` Kirill A. Shutemov [this message]
2025-01-14 18:02 ` Yosry Ahmed
2025-01-15 4:28 ` Yu Zhao
2025-01-15 4:31 ` Yu Zhao
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=sct6vvupd4cp6xt66nn6sfs7w3srpx6zcxxsn6rz5qo4tz3la6@btdqsbicmrto \
--to=kirill.shutemov@linux.intel.com \
--cc=Jason@zx2c4.com \
--cc=airlied@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=andi.shyti@linux.intel.com \
--cc=axboe@kernel.dk \
--cc=brauner@kernel.org \
--cc=chengming.zhou@linux.dev \
--cc=christophe.leroy@csgroup.eu \
--cc=dan.carpenter@linaro.org \
--cc=david@redhat.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=gehao@kylinos.cn \
--cc=hannes@cmpxchg.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=joonas.lahtinen@linux.intel.com \
--cc=josef@toxicpanda.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mhiramat@kernel.org \
--cc=miklos@szeredi.hu \
--cc=nphamcs@gmail.com \
--cc=osalvador@suse.de \
--cc=ran.xiaokai@zte.com.cn \
--cc=rodrigo.vivi@intel.com \
--cc=rostedt@goodmis.org \
--cc=simona@ffwll.ch \
--cc=tursulin@ursulin.net \
--cc=vbabka@suse.cz \
--cc=willy@infradead.org \
--cc=yosryahmed@google.com \
--cc=yuzhao@google.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