From: Chen Ridong <chenridong@huaweicloud.com>
To: akpm@linux-foundation.org, mhocko@suse.com, hannes@cmpxchg.org,
yosryahmed@google.com, yuzhao@google.com, david@redhat.com,
willy@infradead.org, ryan.roberts@arm.com, baohua@kernel.org,
21cnbao@gmail.com, wangkefeng.wang@huawei.com
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
chenridong@huawei.com, wangweiyang2@huawei.com,
xieym_ict@hotmail.com
Subject: [RFC PATCH v3 0/2] mm: vmscan: retry folios written back while isolated
Date: Wed, 4 Dec 2024 04:01:56 +0000 [thread overview]
Message-ID: <20241204040158.2768519-1-chenridong@huaweicloud.com> (raw)
From: Chen Ridong <chenridong@huawei.com>
The page reclaim isolates a batch of folios from the tail of one of the
LRU lists and works on those folios one by one. For a suitable
swap-backed folio, if the swap device is async, it queues that folio for
writeback. After the page reclaim finishes an entire batch, it puts back
the folios it queued for writeback to the head of the original LRU list.
In the meantime, the page writeback flushes the queued folios also by
batches. Its batching logic is independent from that of the page reclaim.
For each of the folios it writes back, the page writeback calls
folio_rotate_reclaimable() which tries to rotate a folio to the tail.
folio_rotate_reclaimable() only works for a folio after the page reclaim
has put it back. If an async swap device is fast enough, the page
writeback can finish with that folio while the page reclaim is still
working on the rest of the batch containing it. In this case, that folio
will remain at the head and the page reclaim will not retry it before
reaching there.
This issue has been fixed for multi-gen LRU with commit 359a5e1416ca ("mm:
multi-gen LRU: retry folios written back while isolated"). Fix this issue
in the same way for active/inactive lru.
---
v3:
- fix this issue in the same with way as multi-gen LRU.
v2:
- detect folios whose writeback has done and move them to the tail
of lru. suggested by Barry Song
[2] https://lore.kernel.org/linux-kernel/CAGsJ_4zqL8ZHNRZ44o_CC69kE7DBVXvbZfvmQxMGiFqRxqHQdA@mail.gmail.com/
v1:
[1] https://lore.kernel.org/linux-kernel/20241010081802.290893-1-chenridong@huaweicloud.com/
Chen Ridong (2):
mm: vmascan: add find_folios_written_back() helper
mm: vmscan: retry folios written back while isolated
mm/vmscan.c | 108 ++++++++++++++++++++++++++++++++++++----------------
1 file changed, 76 insertions(+), 32 deletions(-)
--
2.34.1
next reply other threads:[~2024-12-04 4:11 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-04 4:01 Chen Ridong [this message]
2024-12-04 4:01 ` [RFC PATCH v3 1/2] mm: vmascan: add find_folios_written_back() helper Chen Ridong
2024-12-04 10:37 ` Barry Song
2024-12-04 4:01 ` [RFC PATCH v3 2/2] mm: vmscan: retry folios written back while isolated Chen Ridong
2024-12-04 10:45 ` Barry Song
2024-12-05 2:06 ` chenridong
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=20241204040158.2768519-1-chenridong@huaweicloud.com \
--to=chenridong@huaweicloud.com \
--cc=21cnbao@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=baohua@kernel.org \
--cc=chenridong@huawei.com \
--cc=david@redhat.com \
--cc=hannes@cmpxchg.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.com \
--cc=ryan.roberts@arm.com \
--cc=wangkefeng.wang@huawei.com \
--cc=wangweiyang2@huawei.com \
--cc=willy@infradead.org \
--cc=xieym_ict@hotmail.com \
--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