Re: [PATCH v3 5/6] mm: support batched checking of the young flag for MGLRU

From: David Hildenbrand (Arm)

Date: Fri Mar 06 2026 - 09:45:17 EST


On 3/6/26 07:43, Baolin Wang wrote:
> Use the batched helper test_and_clear_young_ptes_notify() to check and clear
> the young flag to improve the performance during large folio reclamation when
> MGLRU is enabled.
>
> Meanwhile, we can also support batched checking the young and dirty flag
> when MGLRU walks the mm's pagetable to update the folios' generation
> counter. Since MGLRU also checks the PTE dirty bit, use folio_pte_batch_flags()
> with FPB_MERGE_YOUNG_DIRTY set to detect batches of PTEs for a large folio.
>
> Then we can remove the ptep_test_and_clear_young_notify() since it has
> no users now.
>
> Note that we also update the 'young' counter and 'mm_stats[MM_LEAF_YOUNG]'
> counter with the batched count in the lru_gen_look_around() and walk_pte_range().
> However, the batched operations may inflate these two counters, because in
> a large folio not all PTEs may have been accessed. (Additionally, tracking
> how many PTEs have been accessed within a large folio is not very meaningful,
> since the mm core actually tracks access/dirty on a per-folio basis, not per
> page). The impact analysis is as follows:
>
> 1. The 'mm_stats[MM_LEAF_YOUNG]' counter has no functional impact and is
> mainly for debugging.
>
> 2. The 'young' counter is used to decide whether to place the current PMD
> entry into the bloom filters by suitable_to_scan() (so that next time we
> can check whether it has been accessed again), which may set the hash bit
> in the bloom filters for a PMD entry that hasn’t seen much access. However,
> bloom filters inherently allow some error, so this effect appears negligible.
>
> Reviewed-by: Rik van Riel <riel@xxxxxxxxxxx>
> Signed-off-by: Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx>
> ---

Thanks!

Acked-by: David Hildenbrand (Arm) <david@xxxxxxxxxx>

--
Cheers,

David