The patchset adds khugepaged selftest (anon-THP only for now), expands cases khugepaged can handle and switches anon-THP copy-on-write handling to 4k. Please review and consider applying. v3: - Fix handling compound pages in swap cache; - Rework swaped vs. referenced check; - Fix refcounting for compound pages; - Drop Reviewed-by/Acked-by as patchset changed non-trivially; - Typos; v2: - Fix race in compound page handling; - Add one more test-case for compound page case; - Rework LRU add cache draining; - Typos; Kirill A. Shutemov (8): khugepaged: Add self test khugepaged: Do not stop collapse if less than half PTEs are referenced khugepaged: Drain all LRU caches before scanning pages khugepaged: Drain LRU add pagevec after swapin khugepaged: Allow to collapse a page shared across fork khugepaged: Allow to collapse PTE-mapped compound pages thp: Change CoW semantics for anon-THP khugepaged: Introduce 'max_ptes_shared' tunable Documentation/admin-guide/mm/transhuge.rst | 7 + include/trace/events/huge_memory.h | 3 +- mm/huge_memory.c | 249 +----- mm/khugepaged.c | 218 +++-- tools/testing/selftests/vm/Makefile | 1 + tools/testing/selftests/vm/khugepaged.c | 982 +++++++++++++++++++++ 6 files changed, 1174 insertions(+), 286 deletions(-) create mode 100644 tools/testing/selftests/vm/khugepaged.c -- 2.26.0