Re: [PATCH 06/16] selftests/mm: add khugepaged race harness
From: Mike Rapoport
Date: Mon Aug 03 2026 - 07:11:41 EST
> Collapse serializes against faults, GUP, fork, mremap and zapping
> through a protocol of locks, TLB flushes and refcount checks; none of
> the khugepaged selftests exercise it under contention.
>
> Add khugepaged_race: two faulters, MADV_DONTNEED, transient FOLL_PIN
> (gup_test), fork and mremap threads race one of three collapse
> drivers over the same ranges:
>
> stepped khugepaged driven one full pass at a time via
> khugepaged_full_pass() — deterministic extent per step;
> free free-running khugepaged (scan_sleep_millisecs=0) — soak;
> madvise MADV_COLLAPSE + MADV_DONTNEED loop — the PMD-order axis.
>
> diff --git a/tools/testing/selftests/mm/run_vmtests.sh b/tools/testing/selftests/mm/run_vmtests.sh
> index 6f42e35b5227..a8b6b839cb97 100755
> --- a/tools/testing/selftests/mm/run_vmtests.sh
> +++ b/tools/testing/selftests/mm/run_vmtests.sh
> @@ -404,6 +404,13 @@ CATEGORY="cow" run_test ./cow
>
> CATEGORY="thp" run_test ./folio_order_check
>
> +
> +CATEGORY="thp" run_test ./khugepaged_race -d 5 -m stepped
> +
> +CATEGORY="thp" run_test ./khugepaged_race -d 5 -m free
> +
> +CATEGORY="thp" run_test ./khugepaged_race -d 5 -m madvise
Please set the default duration so it will be 5 seconds for each mode
and make ./khugepaged_race run all the modes by default.
--
Sincerely yours,
Mike.