The patch titled Subject: mm-mglru-rework-workingset-protection-fix has been added to the -mm mm-unstable branch. Its filename is mm-mglru-rework-workingset-protection-fix.patch This patch will shortly appear at https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/mm-mglru-rework-workingset-protection-fix.patch This patch will later appear in the mm-unstable branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next via the mm-everything branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm and is updated there every 2-3 working days ------------------------------------------------------ From: Yu Zhao <yuzhao@xxxxxxxxxx> Subject: mm-mglru-rework-workingset-protection-fix Date: Fri, 6 Dec 2024 21:44:15 -0700 Some outlier results from LULESH (Livermore Unstructured Lagrangian Explicit Shock Hydrodynamics) [1] caught my eye. The following fix made the benchmark a lot happier (128GB DRAM + Optane swap): Before After Change Average (z/s) 6894 7574 +10% Deviation (10 samples) 12.96% 1.76% -86% [1] https://asc.llnl.gov/codes/proxy-apps/lulesh Link: https://lkml.kernel.org/r/Z1PSn79GPcCxeI_g@xxxxxxxxxx Signed-off-by: Yu Zhao <yuzhao@xxxxxxxxxx> Cc: Bharata B Rao <bharata@xxxxxxx> Cc: David Stevens <stevensd@xxxxxxxxxxxx> Cc: Kairui Song <kasong@xxxxxxxxxxx> Cc: Kalesh Singh <kaleshsingh@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/vmscan.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) --- a/mm/vmscan.c~mm-mglru-rework-workingset-protection-fix +++ a/mm/vmscan.c @@ -916,8 +916,7 @@ static enum folio_references folio_check if (!referenced_ptes) return FOLIOREF_RECLAIM; - lru_gen_set_refs(folio); - return FOLIOREF_ACTIVATE; + return lru_gen_set_refs(folio) ? FOLIOREF_ACTIVATE : FOLIOREF_KEEP; } referenced_folio = folio_test_clear_referenced(folio); @@ -4173,11 +4172,7 @@ bool lru_gen_look_around(struct page_vma old_gen = folio_update_gen(folio, new_gen); if (old_gen >= 0 && old_gen != new_gen) update_batch_size(walk, folio, old_gen, new_gen); - - continue; - } - - if (lru_gen_set_refs(folio)) { + } else if (lru_gen_set_refs(folio)) { old_gen = folio_lru_gen(folio); if (old_gen >= 0 && old_gen != new_gen) folio_activate(folio); _ Patches currently in -mm which might be from yuzhao@xxxxxxxxxx are mm-mglru-clean-up-workingset.patch mm-mglru-optimize-deactivation.patch mm-mglru-rework-aging-feedback.patch mm-mglru-rework-type-selection.patch mm-mglru-rework-refault-detection.patch mm-mglru-rework-workingset-protection.patch mm-mglru-rework-workingset-protection-fix.patch