mm/vmscan: Optimise shrink_page_list for non-PMD-sized folios
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Sat, 15 Aug 2020 23:28:51 +0000 (19:28 -0400)
committerMatthew Wilcox (Oracle) <willy@infradead.org>
Mon, 21 Mar 2022 17:01:35 +0000 (13:01 -0400)
A large folio which is smaller than a PMD does not need to do the extra
work in try_to_unmap() of trying to split a PMD entry.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
mm/vmscan.c

index d15a9f0..8243437 100644 (file)
@@ -1765,7 +1765,8 @@ retry:
                        enum ttu_flags flags = TTU_BATCH_FLUSH;
                        bool was_swapbacked = PageSwapBacked(page);
 
-                       if (unlikely(PageTransHuge(page)))
+                       if (PageTransHuge(page) &&
+                                       thp_order(page) >= HPAGE_PMD_ORDER)
                                flags |= TTU_SPLIT_HUGE_PMD;
 
                        try_to_unmap(folio, flags);