Re: [PATCH] mm: memory: check userfaultfd_wp() in vmf_orig_pte_uffd_wp()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 2024/4/18 2:34, Peter Xu wrote:
Hi, Kefeng,

On Wed, Apr 17, 2024 at 05:30:40PM +0800, Kefeng Wang wrote:


On 2024/4/17 16:23, Kefeng Wang wrote:
Directly call vmf_orig_pte_uffd_wp() in do_anonymous_page() and
set_pte_range() to save a uffd_wp and add userfaultfd_wp() check
in vmf_orig_pte_uffd_wp() to avoid the unnecessary function calls
in the most sense, lat_pagefault testcase does show improvement
though very small(~1%).

I'm ok with the change if that helps as big as 1%, but I'm a bit surprised
to see such a difference, because for file pte_marker_uffd_wp() should
check first on pte_none() then it should return already if uffd not even
registered for the vma, while orig_pte should be hot too if valid.

Yes, retest, not as big as 1%, but the perf shows vmf_orig_pte_uffd_wp
is eliminated,

[root@localhost]# perf report -i perf.data.old |grep vmf
0.17% 0.13% lat_pagefault [kernel.kallsyms] [k] vmf_orig_pte_uffd_wp.part.0.isra.0
[root@localhost]# perf report -i perf.data |grep vmf



Signed-off-by: Kefeng Wang <wangkefeng.wang@xxxxxxxxxx>
---
   mm/memory.c | 9 +++++----
   1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/mm/memory.c b/mm/memory.c
index 5ae2409d3cb9..a6afc96001e6 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -117,6 +117,9 @@ static bool vmf_orig_pte_uffd_wp(struct vm_fault *vmf)


	 if (!IS_ENABLED(CONFIG_PTE_MARKER_UFFD_WP))
         	return false;

Will add config check too,

pte_marker_uffd_wp() returns false when !PTE_MARKER_UFFD_WP, so kind of
imply this.  I assume you meant to avoid checking ORIG_PTE_VALID flag, but

Just to avoid checking ORIG_PTE_VALID and the new userfaultfd_wp() since
it is not supported on most archs.

the flags is pretty hot too.  Again, just want to double check with you on
whether it can have such a huge difference, e.g., how that compares with
the current code v.s. original patch v.s. this squashed.

I will change the changelog to show different about vmf_orig_pte_uffd_wp from perf data.

Thanks.




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux