Re: [PATCH v1 02/18] mm/rmap: always inline anon/file rmap duplication of a single PTE

From: David Hildenbrand
Date: Fri Apr 19 2024 - 05:14:50 EST


On 19.04.24 04:25, Yin, Fengwei wrote:


On 4/10/2024 3:22 AM, David Hildenbrand wrote:
As we grow the code, the compiler might make stupid decisions and
unnecessarily degrade fork() performance. Let's make sure to always inline
functions that operate on a single PTE so the compiler will always
optimize out the loop and avoid a function call.

This is a preparation for maintining a total mapcount for large folios.

Signed-off-by: David Hildenbrand<david@xxxxxxxxxx>
The patch looks good to me. Just curious: Is this change driven by code
reviewing or performance data profiling? Thanks.

It was identified while observing an performance degradation with small folios in the fork() microbenchmark discussed in the cover letter (mentioned here as "unnecessarily degrade fork() performance").

The added atomic_add() was sufficient for the compiler not inline and optimize-out nr_pages, inserting a function call to a function where nr_pages is not optimized out.

--
Cheers,

David / dhildenb