From: "Garg, Shivank" <shivankg@amd.com>
To: Dev Jain <dev.jain@arm.com>, <akpm@linux-foundation.org>,
<david@kernel.org>, <ljs@kernel.org>, <chrisl@kernel.org>,
<kasong@tencent.com>, <hughd@google.com>, <liam@infradead.org>
Cc: <riel@surriel.com>, <vbabka@kernel.org>, <harry@kernel.org>,
<jannh@google.com>, <linux-mm@kvack.org>,
<linux-kernel@vger.kernel.org>, <rppt@kernel.org>,
<surenb@google.com>, <mhocko@suse.com>, <qi.zheng@linux.dev>,
<shakeel.butt@linux.dev>, <baohua@kernel.org>,
<axelrasmussen@google.com>, <yuanchu@google.com>,
<weixugc@google.com>, <shikemeng@huaweicloud.com>,
<nphamcs@gmail.com>, <bhe@redhat.com>, <youngjun.park@lge.com>,
<baolin.wang@linux.alibaba.com>, <pfalcato@suse.de>,
<ryan.roberts@arm.com>, <anshuman.khandual@arm.com>
Subject: Re: [PATCH v4 02/12] mm/rmap: Add try_to_unmap_hugetlb_one
Date: Thu, 9 Jul 2026 14:50:47 +0530 [thread overview]
Message-ID: <9a486b16-e4ee-4f1d-8686-022ef34a186f@amd.com> (raw)
In-Reply-To: <d3f79924-6ad9-4b08-9669-c6acea584147@arm.com>
On 7/9/2026 2:28 PM, Dev Jain wrote:
>
>
> On 09/07/26 12:46 pm, Garg, Shivank wrote:
>>
>>
>> On 5/26/2026 12:06 PM, Dev Jain wrote:
>>> Simplify try_to_unmap_one by separating out the hugetlb parts into
>>> try_to_unmap_hugetlb_one.
>>
>> [snip]
>>
>>> @@ -2393,7 +2431,8 @@ static int folio_not_mapped(struct folio *folio)
>>> void try_to_unmap(struct folio *folio, enum ttu_flags flags)
>>> {
>>> struct rmap_walk_control rwc = {
>>> - .rmap_one = try_to_unmap_one,
>>> + .rmap_one = folio_test_hugetlb(folio) ?
>>> + try_to_unmap_hugetlb_one : try_to_unmap_one,
>>> .arg = (void *)flags,
>>> .done = folio_not_mapped,
>>> .anon_lock = folio_lock_anon_vma_read,
>>
>> Now that try_to_unmap_hugetlb_one() is split out, should we wrap it in
>> #ifdef CONFIG_HUGETLB_PAGE and a stub function for !HUGETLB case?
>
> I'd rather not, if everything builds correctly?
>
>
>>
>> I'm working on similar change for try_to_migrate() and had this thought.
>
> Wait, are you doing the batching work for try_to_migrate()? I had
> that as an obvious follow up to this series so if you are already on it
> then great!
>
Yes,
I'm seeing significant throughput boost when combining it with my batch copy offloading series [1]
Once batch copying removes the copy bottleneck, the rmap walk becomes the dominant cost for PTE-mapped
large folios.
My experiment with move_pages() on two-socket EPYC Zen 3 to move 1GB anon memory from node 0 -> node 1:
folio vanilla DMA (dcbm, 16 chan)
----- -------- -------------------
2MB 10.7 GB/s 64.3 (6.0x) -> no change for PMD mapped
1MB 7.0 GB/s 14.3 (2.0x) copy offlaod
39.0 (5.6x) + rmap batching
256KB 6.7 GB/s 13.0 (1.9x) copy offload
32.3 (4.8x) + rmap batching
[1] https://lore.kernel.org/linux-mm/20260630-shivank-batch-migrate-offload-v6-0-da95d7e8b8a2@amd.com
> One other function to batch is page_vma_mkclean_one, but we do not already
> have the folio there, so have to be careful.
Thanks,
Shivank
next prev parent reply other threads:[~2026-07-09 9:21 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-26 6:36 [PATCH v4 00/12] Optimize anonymous large folio unmapping Dev Jain
2026-05-26 6:36 ` [PATCH v4 01/12] mm/rmap: convert page -> folio for hwpoison checks Dev Jain
2026-06-09 13:44 ` David Hildenbrand (Arm)
2026-06-10 7:02 ` Dev Jain
2026-06-10 12:13 ` David Hildenbrand (Arm)
2026-05-26 6:36 ` [PATCH v4 02/12] mm/rmap: Add try_to_unmap_hugetlb_one Dev Jain
2026-06-09 14:16 ` David Hildenbrand (Arm)
2026-06-18 7:44 ` Lance Yang
2026-06-18 7:55 ` David Hildenbrand (Arm)
2026-06-18 9:09 ` Lance Yang
2026-06-18 9:43 ` David Hildenbrand (Arm)
2026-06-18 10:01 ` Lance Yang
2026-06-22 8:13 ` Dev Jain
2026-06-22 8:14 ` Lance Yang
2026-06-22 8:14 ` Dev Jain
2026-06-22 8:17 ` David Hildenbrand (Arm)
2026-06-24 5:50 ` Dev Jain
2026-06-24 6:58 ` Lance Yang
2026-06-23 8:40 ` Dev Jain
2026-06-23 11:49 ` David Hildenbrand (Arm)
2026-07-09 7:16 ` Garg, Shivank
2026-07-09 8:58 ` Dev Jain
2026-07-09 9:20 ` Garg, Shivank [this message]
2026-07-09 9:24 ` Dev Jain
2026-05-26 6:36 ` [PATCH v4 03/12] mm/rmap: refactor some code around lazyfree folio unmapping Dev Jain
2026-06-09 14:20 ` David Hildenbrand (Arm)
2026-06-23 8:42 ` Dev Jain
2026-06-29 12:30 ` David Hildenbrand (Arm)
2026-05-26 6:36 ` [PATCH v4 04/12] mm/memory: Batch set uffd-wp markers during zapping Dev Jain
2026-06-16 13:43 ` David Hildenbrand (Arm)
2026-06-23 10:01 ` Dev Jain
2026-06-27 9:00 ` Dev Jain
2026-07-07 13:47 ` David Hildenbrand (Arm)
2026-05-26 6:36 ` [PATCH v4 05/12] mm/rmap: batch unmap folios belonging to uffd-wp VMAs Dev Jain
2026-05-26 6:36 ` [PATCH v4 06/12] mm/swap: rename subpage->page in folio_dup_swap/folio_put_swap Dev Jain
2026-06-16 13:47 ` David Hildenbrand (Arm)
2026-05-26 6:36 ` [PATCH v4 07/12] mm/swapfile: Add batched version of folio_dup_swap Dev Jain
2026-06-16 13:50 ` David Hildenbrand (Arm)
2026-06-16 13:51 ` David Hildenbrand (Arm)
2026-05-26 6:36 ` [PATCH v4 08/12] mm/swapfile: Add batched version of folio_put_swap Dev Jain
2026-06-16 13:54 ` David Hildenbrand (Arm)
2026-06-23 10:03 ` Dev Jain
2026-05-26 6:36 ` [PATCH v4 09/12] mm/rmap: Add batched version of folio_try_share_anon_rmap_pte Dev Jain
2026-06-16 14:04 ` David Hildenbrand (Arm)
2026-06-23 10:05 ` Dev Jain
2026-05-26 6:36 ` [PATCH v4 10/12] mm/rmap: refactor anon folio unmap in try_to_unmap_one Dev Jain
2026-06-16 14:10 ` David Hildenbrand (Arm)
2026-06-23 11:01 ` Dev Jain
2026-05-26 6:36 ` [PATCH v4 11/12] mm/mprotect: drop 'sub' from page_anon_exclusive_sub_batch Dev Jain
2026-06-16 14:12 ` David Hildenbrand (Arm)
2026-06-23 11:02 ` Dev Jain
2026-05-26 6:36 ` [PATCH v4 12/12] mm/rmap: enable batch unmapping of anonymous folios Dev Jain
2026-05-28 16:50 ` [PATCH v4 00/12] Optimize anonymous large folio unmapping Dev Jain
2026-06-09 13:24 ` David Hildenbrand (Arm)
2026-06-09 14:18 ` David Hildenbrand (Arm)
2026-06-23 11:04 ` Dev Jain
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=9a486b16-e4ee-4f1d-8686-022ef34a186f@amd.com \
--to=shivankg@amd.com \
--cc=akpm@linux-foundation.org \
--cc=anshuman.khandual@arm.com \
--cc=axelrasmussen@google.com \
--cc=baohua@kernel.org \
--cc=baolin.wang@linux.alibaba.com \
--cc=bhe@redhat.com \
--cc=chrisl@kernel.org \
--cc=david@kernel.org \
--cc=dev.jain@arm.com \
--cc=harry@kernel.org \
--cc=hughd@google.com \
--cc=jannh@google.com \
--cc=kasong@tencent.com \
--cc=liam@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ljs@kernel.org \
--cc=mhocko@suse.com \
--cc=nphamcs@gmail.com \
--cc=pfalcato@suse.de \
--cc=qi.zheng@linux.dev \
--cc=riel@surriel.com \
--cc=rppt@kernel.org \
--cc=ryan.roberts@arm.com \
--cc=shakeel.butt@linux.dev \
--cc=shikemeng@huaweicloud.com \
--cc=surenb@google.com \
--cc=vbabka@kernel.org \
--cc=weixugc@google.com \
--cc=youngjun.park@lge.com \
--cc=yuanchu@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