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 9:47, Kefeng Wang wrote:


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.

Since pte_mkuffd_wp(return pte) if !PTE_MARKER_UFFD_WP, so this is not
needed, also confirm it after checking the disassemble, will update
changelog and resend.



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