From: Muchun Song <muchun.song@linux.dev>
To: Li Zhe <lizhe.67@bytedance.com>
Cc: akpm@linux-foundation.org, apopple@nvidia.com, arnd@arndb.de,
balbirs@nvidia.com, bp@alien8.de, dave.hansen@linux.intel.com,
david@kernel.org, kees@kernel.org, mingo@redhat.com,
rppt@kernel.org, tglx@kernel.org, linux-arch@vger.kernel.org,
linux-hardening@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-mm@kvack.org, x86@kernel.org
Subject: Re: [PATCH v9 4/8] mm: add a template-based fast path for zone-device page init
Date: Mon, 3 Aug 2026 16:39:22 +0800 [thread overview]
Message-ID: <CB22DBB6-0B52-46C2-9A19-4A18A6F6DEC1@linux.dev> (raw)
In-Reply-To: <20260803070929.86075-5-lizhe.67@bytedance.com>
> On Aug 3, 2026, at 15:09, Li Zhe <lizhe.67@bytedance.com> wrote:
>
> memmap_init_zone_device() repeats nearly identical head-page
> initialization for each PFN. Prepare one reusable ZONE_DEVICE head-page
> template through the existing slow path, refresh the PFN-dependent
> fields in that template before each copy, and memcpy it into each
> destination page.
>
> Use the template path unconditionally, as suggested by Muchun. The
> page_ref_set tracepoint is primarily a debugging aid, while this code is
> still initializing struct pages before they are handed out. From the
> perspective of users of those pages, the initialization-time refcount
> transitions are not part of the observable page lifetime.
>
> This means page_ref_set will no longer observe every initialization-time
> refcount assignment for copied ZONE_DEVICE head pages. The impact is
> controlled because the final initialized struct page state is unchanged,
> and keeping a separate non-template path only for this local tracepoint
> observability would add complexity to the common path.
>
> This patch accelerates head-page initialization. The pfns_per_compound
> == 1 case gets the full benefit here, compound tails are handled in the
> next patch.
>
> Tested in a VM with a 100 GB fsdax namespace device configured with
> map=dev on Intel Ice Lake server. This test exercises the nd_pmem rebind
> path (pfns_per_compound == 1).
>
> Test procedure:
> Rebind the nd_pmem driver 30 times and collect the memmap initialization
> time from the pr_debug() output of memmap_init_zone_device().
>
> Base(v7.2-rc1):
> Average of rebinds for nd_pmem driver: 244.28 ms
>
> With this patch and its prerequisites applied:
> Average of rebinds for nd_pmem driver: 215.55 ms
>
> This reduces the average memmap initialization time measured during rebind
> from 244.28 ms to 215.55 ms, or about 11%.
>
> Suggested-by: Muchun Song <muchun.song@linux.dev>
I personally feel you might have used the wrong trailer here, because it
implies that the overall design is based on someone's suggestion. But for me,
I think what you actually meant is that in a previous version, I made a
suggestion about simplifying the code, rather than dictating the overall
direction of this entire patch series. So I feel I shouldn't be credited here.
This information is already enough just appearing in the change log.
Muchun,
Thanks.
next prev parent reply other threads:[~2026-08-03 8:39 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-03 7:09 [PATCH v9 0/8] mm: optimize zone-device memmap initialization Li Zhe
2026-08-03 7:09 ` [PATCH v9 1/8] mm: fix stale ZONE_DEVICE refcount comment Li Zhe
2026-08-03 7:09 ` [PATCH v9 2/8] mm: factor zone-device page init helpers out of __init_zone_device_page Li Zhe
2026-08-03 7:09 ` [PATCH v9 3/8] mm: add a set_page_section_from_pfn() helper Li Zhe
2026-08-03 7:09 ` [PATCH v9 4/8] mm: add a template-based fast path for zone-device page init Li Zhe
2026-08-03 8:39 ` Muchun Song [this message]
2026-08-05 9:50 ` Li Zhe
2026-08-03 7:09 ` [PATCH v9 5/8] mm: extend the template fast path to zone-device compound tails Li Zhe
2026-08-03 7:09 ` [PATCH v9 6/8] string: introduce memcpy_nontemporal() Li Zhe
2026-08-03 7:09 ` [PATCH v9 7/8] mm: use memcpy_nontemporal() in zone-device template copies Li Zhe
2026-08-03 7:09 ` [PATCH v9 8/8] x86/string: extend memcpy_flushcache() fixed-size fastpaths Li Zhe
2026-08-04 20:35 ` Borislav Petkov
2026-08-05 11:04 ` Li Zhe
2026-08-03 21:40 ` [PATCH v9 0/8] mm: optimize zone-device memmap initialization Andrew Morton
2026-08-05 9:49 ` Li Zhe
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=CB22DBB6-0B52-46C2-9A19-4A18A6F6DEC1@linux.dev \
--to=muchun.song@linux.dev \
--cc=akpm@linux-foundation.org \
--cc=apopple@nvidia.com \
--cc=arnd@arndb.de \
--cc=balbirs@nvidia.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=david@kernel.org \
--cc=kees@kernel.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-hardening@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lizhe.67@bytedance.com \
--cc=mingo@redhat.com \
--cc=rppt@kernel.org \
--cc=tglx@kernel.org \
--cc=x86@kernel.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.