linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH 0/7] add mTHP support for wp
@ 2025-08-14 11:38 Vernon Yang
  0 siblings, 0 replies; 3+ messages in thread
From: Vernon Yang @ 2025-08-14 11:38 UTC (permalink / raw)
  To: akpm, david, lorenzo.stoakes, ziy, baolin.wang, Liam.Howlett,
	npache, ryan.roberts, dev.jain, baohua, glider, elver, dvyukov,
	vbabka, rppt, surenb, mhocko, muchun.song, osalvador, shuah,
	richardcochran
  Cc: linux-mm, linux-kernel, Vernon Yang

Hi all,

This patchset is introduced to make pagefault write-protect copy support
mthp, with this series, pagefault write-protect copy will have a 9-14%
performance improvement.

Currently pagefaults on anonymous pages support mthp [1], and hardware
features (such as arm64 contpte) can be used to store multiple ptes in
one TLB entry, reducing the probability of TLB misses. However, when the
process is forked and the cow is triggered again, the above optimization
effect is lost, and only 4KB is requested once at a time.

Therefore, make pagefault write-protect copy support mthp to maintain the
optimization effect of TLB and improve the efficiency of cow pagefault.

vm-scalability usemem shows a great improvement,
test using: usemem -n 32 --prealloc --prefault 249062617
(result unit is KB/s, bigger is better)

|    size     | w/o patch | w/ patch  |  delta  |
|-------------|-----------|-----------|---------|
| baseline 4K | 723041.63 | 717643.21 | -0.75%  |
| mthp 16K    | 732871.14 | 799513.18 | +9.09%  |
| mthp 32K    | 746060.91 | 836261.83 | +12.09% |
| mthp 64K    | 747333.18 | 855570.43 | +14.48% |

This series is based on Linux v6.16 (038d61fd6422).

Thanks,
Vernon

[1] https://lore.kernel.org/all/20231207161211.2374093-1-ryan.roberts@arm.com/

Vernon Yang (7):
  mm: memory: replace single-operation with multi-operation in wp
  mm: memory: add ptep_clear_flush_range function
  mm: memory: add kmsan_copy_pages_meta function
  mm: memory: add offset to start copy for copy_user_gigantic_page
  mm: memory: improve wp_page_copy readability
  mm: memory: add mTHP support for wp
  selftests: mm: support wp mTHP collapse testing

 include/linux/huge_mm.h                 |   3 +
 include/linux/kmsan.h                   |  13 +-
 include/linux/mm.h                      |   8 +
 include/linux/pgtable.h                 |   3 +
 mm/hugetlb.c                            |   6 +-
 mm/kmsan/shadow.c                       |  26 +-
 mm/memory.c                             | 309 ++++++++++++++++++------
 mm/pgtable-generic.c                    |  20 ++
 tools/testing/selftests/mm/khugepaged.c |   5 +-
 9 files changed, 302 insertions(+), 91 deletions(-)

--
2.50.1



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [RFC PATCH 0/7] add mTHP support for wp
@ 2025-08-19  0:55 zhangqilong
  2025-08-19 18:21 ` Vernon Yang
  0 siblings, 1 reply; 3+ messages in thread
From: zhangqilong @ 2025-08-19  0:55 UTC (permalink / raw)
  To: Vernon Yang, akpm@linux-foundation.org, david@redhat.com,
	lorenzo.stoakes@oracle.com, ziy@nvidia.com,
	baolin.wang@linux.alibaba.com, Liam.Howlett@oracle.com,
	npache@redhat.com, ryan.roberts@arm.com, dev.jain@arm.com,
	baohua@kernel.org, glider@google.com, elver@google.com,
	dvyukov@google.com, vbabka@suse.cz, rppt@kernel.org,
	surenb@google.com, mhocko@suse.com, muchun.song@linux.dev,
	osalvador@suse.de, shuah@kernel.org, richardcochran@gmail.com
  Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.or

> 
> Hi all,
> 
> This patchset is introduced to make pagefault write-protect copy support
> mthp, with this series, pagefault write-protect copy will have a 9-14%
> performance improvement.
> 
> Currently pagefaults on anonymous pages support mthp [1], and hardware
> features (such as arm64 contpte) can be used to store multiple ptes in one
> TLB entry, reducing the probability of TLB misses. However, when the
> process is forked and the cow is triggered again, the above optimization
> effect is lost, and only 4KB is requested once at a time.
> 
> Therefore, make pagefault write-protect copy support mthp to maintain the
> optimization effect of TLB and improve the efficiency of cow pagefault.
> 
> vm-scalability usemem shows a great improvement, test using: usemem -n
> 32 --prealloc --prefault 249062617 (result unit is KB/s, bigger is better)
> 
> |    size     | w/o patch | w/ patch  |  delta  |
> |-------------|-----------|-----------|---------|
> | baseline 4K | 723041.63 | 717643.21 | -0.75%  |
> | mthp 16K    | 732871.14 | 799513.18 | +9.09%  |
> | mthp 32K    | 746060.91 | 836261.83 | +12.09% |
> | mthp 64K    | 747333.18 | 855570.43 | +14.48% |
> 
> This series is based on Linux v6.16 (038d61fd6422).
> 
> Thanks,
> Vernon
> 
> [1] https://lore.kernel.org/all/20231207161211.2374093-1-
> ryan.roberts@arm.com/
> 
> Vernon Yang (7):
>   mm: memory: replace single-operation with multi-operation in wp
>   mm: memory: add ptep_clear_flush_range function
>   mm: memory: add kmsan_copy_pages_meta function
>   mm: memory: add offset to start copy for copy_user_gigantic_page
>   mm: memory: improve wp_page_copy readability
>   mm: memory: add mTHP support for wp

Oh, we are also doing similar optimizations, but only for the code segment. :)

>   selftests: mm: support wp mTHP collapse testing
> 
>  include/linux/huge_mm.h                 |   3 +
>  include/linux/kmsan.h                   |  13 +-
>  include/linux/mm.h                      |   8 +
>  include/linux/pgtable.h                 |   3 +
>  mm/hugetlb.c                            |   6 +-
>  mm/kmsan/shadow.c                       |  26 +-
>  mm/memory.c                             | 309 ++++++++++++++++++------
>  mm/pgtable-generic.c                    |  20 ++
>  tools/testing/selftests/mm/khugepaged.c |   5 +-
>  9 files changed, 302 insertions(+), 91 deletions(-)
> 
> --
> 2.50.1
> 



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [RFC PATCH 0/7] add mTHP support for wp
  2025-08-19  0:55 [RFC PATCH 0/7] add mTHP support for wp zhangqilong
@ 2025-08-19 18:21 ` Vernon Yang
  0 siblings, 0 replies; 3+ messages in thread
From: Vernon Yang @ 2025-08-19 18:21 UTC (permalink / raw)
  To: zhangqilong
  Cc: akpm@linux-foundation.org, david@redhat.com,
	lorenzo.stoakes@oracle.com, ziy@nvidia.com,
	baolin.wang@linux.alibaba.com, Liam.Howlett@oracle.com,
	npache@redhat.com, ryan.roberts@arm.com, dev.jain@arm.com,
	baohua@kernel.org, glider@google.com, elver@google.com,
	dvyukov@google.com, vbabka@suse.cz, rppt@kernel.org,
	surenb@google.com, mhocko@suse.com, muchun.song@linux.dev,
	osalvador@suse.de, shuah@kernel.org, richardcochran@gmail.com,
	linux-mm@kvack.org, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 2659 bytes --]



> On Aug 19, 2025, at 08:55, zhangqilong <zhangqilong3@huawei.com> wrote:
> 
>> 
>> Hi all,
>> 
>> This patchset is introduced to make pagefault write-protect copy support
>> mthp, with this series, pagefault write-protect copy will have a 9-14%
>> performance improvement.
>> 
>> Currently pagefaults on anonymous pages support mthp [1], and hardware
>> features (such as arm64 contpte) can be used to store multiple ptes in one
>> TLB entry, reducing the probability of TLB misses. However, when the
>> process is forked and the cow is triggered again, the above optimization
>> effect is lost, and only 4KB is requested once at a time.
>> 
>> Therefore, make pagefault write-protect copy support mthp to maintain the
>> optimization effect of TLB and improve the efficiency of cow pagefault.
>> 
>> vm-scalability usemem shows a great improvement, test using: usemem -n
>> 32 --prealloc --prefault 249062617 (result unit is KB/s, bigger is better)
>> 
>> |    size     | w/o patch | w/ patch  |  delta  |
>> |-------------|-----------|-----------|---------|
>> | baseline 4K | 723041.63 | 717643.21 | -0.75%  |
>> | mthp 16K    | 732871.14 | 799513.18 | +9.09%  |
>> | mthp 32K    | 746060.91 | 836261.83 | +12.09% |
>> | mthp 64K    | 747333.18 | 855570.43 | +14.48% |
>> 
>> This series is based on Linux v6.16 (038d61fd6422).
>> 
>> Thanks,
>> Vernon
>> 
>> [1] https://lore.kernel.org/all/20231207161211.2374093-1-
>> ryan.roberts@arm.com/
>> 
>> Vernon Yang (7):
>> mm: memory: replace single-operation with multi-operation in wp
>> mm: memory: add ptep_clear_flush_range function
>> mm: memory: add kmsan_copy_pages_meta function
>> mm: memory: add offset to start copy for copy_user_gigantic_page
>> mm: memory: improve wp_page_copy readability
>> mm: memory: add mTHP support for wp
> 
> Oh, we are also doing similar optimizations, but only for the code segment. :)

Good! You use a similar optimizations in your code segment, which mthp size 
do you use? 

> 
>> selftests: mm: support wp mTHP collapse testing
>> 
>> include/linux/huge_mm.h                 |   3 +
>> include/linux/kmsan.h                   |  13 +-
>> include/linux/mm.h                      |   8 +
>> include/linux/pgtable.h                 |   3 +
>> mm/hugetlb.c                            |   6 +-
>> mm/kmsan/shadow.c                       |  26 +-
>> mm/memory.c                             | 309 ++++++++++++++++++------
>> mm/pgtable-generic.c                    |  20 ++
>> tools/testing/selftests/mm/khugepaged.c |   5 +-
>> 9 files changed, 302 insertions(+), 91 deletions(-)
>> 
>> --
>> 2.50.1

[-- Attachment #2: Type: text/html, Size: 9215 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-08-19 18:22 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-19  0:55 [RFC PATCH 0/7] add mTHP support for wp zhangqilong
2025-08-19 18:21 ` Vernon Yang
  -- strict thread matches above, loose matches on Subject: below --
2025-08-14 11:38 Vernon Yang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).