From: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
To: Baolin Wang <baolin.wang@linux.alibaba.com>
Cc: akpm@linux-foundation.org, david@kernel.org,
catalin.marinas@arm.com, will@kernel.org, ryan.roberts@arm.com,
Liam.Howlett@oracle.com, vbabka@suse.cz, rppt@kernel.org,
surenb@google.com, mhocko@suse.com, riel@surriel.com,
harry.yoo@oracle.com, jannh@google.com, willy@infradead.org,
baohua@kernel.org, linux-mm@kvack.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 3/3] mm: rmap: support batched unmapping for file large folios
Date: Tue, 16 Dec 2025 10:53:46 +0000 [thread overview]
Message-ID: <b0cde352-0b8e-4330-8c05-fdbc68826e28@lucifer.local> (raw)
In-Reply-To: <eb871ca2-47c8-4b10-a61d-321716f6c147@linux.alibaba.com>
On Tue, Dec 16, 2025 at 01:48:52PM +0800, Baolin Wang wrote:
>
>
> On 2025/12/15 20:38, Lorenzo Stoakes wrote:
> > On Thu, Dec 11, 2025 at 04:16:56PM +0800, Baolin Wang wrote:
> > > Similar to folio_referenced_one(), we can apply batched unmapping for file
> > > large folios to optimize the performance of file folios reclamation.
> > >
> > > Performance testing:
> > > Allocate 10G clean file-backed folios by mmap() in a memory cgroup, and try to
> > > reclaim 8G file-backed folios via the memory.reclaim interface. I can observe
> > > 75% performance improvement on my Arm64 32-core server.
> >
> > Again, you must test on non-arm64 architectures and report the numbers for this
> > also.
>
> Yes, I've tested on the x86 machine, and will add the data in the commit
> message.
>
> > > W/o patch:
> > > real 0m1.018s
> > > user 0m0.000s
> > > sys 0m1.018s
> > >
> > > W/ patch:
> > > real 0m0.249s
> > > user 0m0.000s
> > > sys 0m0.249s
> > >
> > > Signed-off-by: Baolin Wang <baolin.wang@linux.alibaba.com>
> > > ---
> > > mm/rmap.c | 7 ++++---
> > > 1 file changed, 4 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/mm/rmap.c b/mm/rmap.c
> > > index ec232165c47d..4c9d5777c8da 100644
> > > --- a/mm/rmap.c
> > > +++ b/mm/rmap.c
> > > @@ -1855,9 +1855,10 @@ static inline unsigned int folio_unmap_pte_batch(struct folio *folio,
> > > end_addr = pmd_addr_end(addr, vma->vm_end);
> > > max_nr = (end_addr - addr) >> PAGE_SHIFT;
> > >
> > > - /* We only support lazyfree batching for now ... */
> > > - if (!folio_test_anon(folio) || folio_test_swapbacked(folio))
> > > + /* We only support lazyfree or file folios batching for now ... */
> > > + if (folio_test_anon(folio) && folio_test_swapbacked(folio))
> >
> > Why is it now ok to support file-backed batched unmapping when it wasn't in
> > Barry's series (see [0])? You don't seem to be justifying this?
>
> Barry's series[0] is merely aimed at optimizing lazyfree anonymous large
> folios and does not continue to optimize anonymous large folios or
> file-backed large folios at that point.
>
> Subsequently, Barry sent out a new patch (see [1]) to optimize anonymous
> large folios. As for file-backed large folios, the batched unmapping support
> is relatively simple, since we only need to clear the PTE entries for
> file-backed large folios.
Yeah, but he sent an entire patch changing a bunch of logic to accommodate this,
you're just changing the conditional and not really justifying it in the commit
message?
It really needs a 'it is safe to allow this for file-backed because blah blah
blah'.
Is this relying on the prior commits you've added? If so you should say so.
If it was as easy as just changing the conditional then it begs the question as
to why Barry didn't do that in the first place :)
>
> > [0]:https://lore.kernel.org/all/20250214093015.51024-4-21cnbao@gmail.com/T/#u
>
> [1] https://lore.kernel.org/all/20250513084620.58231-1-21cnbao@gmail.com/
>
> > > return 1;
> > > +
> > > if (pte_unused(pte))
> > > return 1;
> > >
> > > @@ -2223,7 +2224,7 @@ static bool try_to_unmap_one(struct folio *folio, struct vm_area_struct *vma,
> > > *
> > > * See Documentation/mm/mmu_notifier.rst
> > > */
> > > - dec_mm_counter(mm, mm_counter_file(folio));
> > > + add_mm_counter(mm, mm_counter_file(folio), -nr_pages);
> >
> > Was this just a bug before?
>
> Nope. Before this patch, we never supported batched unmapping for
> file-backed large folios, so the 'nr_pages' was always 1. After this patch,
> we should use the number of pages in this file-backed large folio.
Right ok :)
Cheers, Lorenzo
prev parent reply other threads:[~2025-12-16 10:54 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-11 8:16 [PATCH v2 0/3] support batch checking of references and unmapping for " Baolin Wang
2025-12-11 8:16 ` [PATCH v2 1/3] arm64: mm: support batch clearing of the young flag " Baolin Wang
2025-12-15 11:36 ` Lorenzo Stoakes
2025-12-16 3:32 ` Baolin Wang
2025-12-16 11:11 ` Lorenzo Stoakes
2025-12-17 3:53 ` Baolin Wang
2025-12-17 14:50 ` Lorenzo Stoakes
2025-12-17 16:06 ` Ryan Roberts
2025-12-18 7:56 ` Baolin Wang
2025-12-17 15:43 ` Ryan Roberts
2025-12-18 7:15 ` Baolin Wang
2025-12-18 12:20 ` Ryan Roberts
2025-12-19 1:00 ` Baolin Wang
2025-12-11 8:16 ` [PATCH v2 2/3] mm: rmap: support batched checks of the references " Baolin Wang
2025-12-15 12:22 ` Lorenzo Stoakes
2025-12-16 3:47 ` Baolin Wang
2025-12-17 6:23 ` Dev Jain
2025-12-17 6:44 ` Baolin Wang
2025-12-17 6:49 ` Dev Jain
2025-12-17 7:09 ` Baolin Wang
2025-12-17 7:23 ` Dev Jain
2025-12-17 16:39 ` Ryan Roberts
2025-12-18 7:47 ` Baolin Wang
2025-12-18 12:08 ` Ryan Roberts
2025-12-19 0:56 ` Baolin Wang
2025-12-11 8:16 ` [PATCH v2 3/3] mm: rmap: support batched unmapping for file " Baolin Wang
2025-12-11 12:36 ` Barry Song
2025-12-15 12:38 ` Lorenzo Stoakes
2025-12-16 5:48 ` Baolin Wang
2025-12-16 6:13 ` Barry Song
2025-12-16 6:22 ` Baolin Wang
2025-12-16 10:54 ` Lorenzo Stoakes
2025-12-17 3:11 ` Baolin Wang
2025-12-17 14:28 ` Lorenzo Stoakes
2025-12-16 10:53 ` Lorenzo Stoakes [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=b0cde352-0b8e-4330-8c05-fdbc68826e28@lucifer.local \
--to=lorenzo.stoakes@oracle.com \
--cc=Liam.Howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=baohua@kernel.org \
--cc=baolin.wang@linux.alibaba.com \
--cc=catalin.marinas@arm.com \
--cc=david@kernel.org \
--cc=harry.yoo@oracle.com \
--cc=jannh@google.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.com \
--cc=riel@surriel.com \
--cc=rppt@kernel.org \
--cc=ryan.roberts@arm.com \
--cc=surenb@google.com \
--cc=vbabka@suse.cz \
--cc=will@kernel.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox