From: gaoxu Date: Fri, 16 Aug 2024 07:48:01 +0000 (+0000) Subject: mm: add lazyfree folio to lru tail X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=ccbb07b2a3a768ad2bab9852731dadca5ac0457b;p=users%2Fjedix%2Flinux-maple.git mm: add lazyfree folio to lru tail Replace lruvec_add_folio with lruvec_add_folio_tail in the lru_lazyfree_fn: 1. The lazy-free folio is added to the LRU_INACTIVE_FILE list. If it's moved to the LRU tail, it allows for faster release lazy-free folio and reduces the impact on file refault. 2. When mglru is enabled, the lazy-free folio is reclaimabled and should be added using lru_gen_add_folio(lruvec, folio, true) instead of lru_gen_add_folio(lruvec, folio, false) for adding to gen. With the change in place, workingset_refault_file is reduced by 33% in the continuous startup testing of the applications in the Android system. Link: https://lkml.kernel.org/r/f29f64e29c08427b95e3df30a5770056@honor.com Signed-off-by: gao xu Cc: Kalesh Singh Cc: Shaohua Li Cc: Suren Baghdasaryan Cc: David Hildenbrand Signed-off-by: Andrew Morton --- diff --git a/mm/swap.c b/mm/swap.c index 6b838986d294..e0dbfc98318e 100644 --- a/mm/swap.c +++ b/mm/swap.c @@ -641,7 +641,7 @@ static void lru_lazyfree(struct lruvec *lruvec, struct folio *folio) * anonymous folios */ folio_clear_swapbacked(folio); - lruvec_add_folio(lruvec, folio); + lruvec_add_folio_tail(lruvec, folio); __count_vm_events(PGLAZYFREE, nr_pages); __count_memcg_events(lruvec_memcg(lruvec), PGLAZYFREE, nr_pages);