selftests/mm: add new selftests for KSM
authorStefan Roesch <shr@devkernel.io>
Tue, 18 Apr 2023 05:13:42 +0000 (22:13 -0700)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 21 Apr 2023 21:52:03 +0000 (14:52 -0700)
commit07115fcc15b4aa5c268fb80b82ad15868a82a285
tree1932335b83c3831f0106c04a5a9e6e9125f8b824
parentd21077fbc2fc987c2e593c34dc3b4d84e546dc9f
selftests/mm: add new selftests for KSM

This adds three new tests to the selftests for KSM.  These tests use the
new prctl API's to enable and disable KSM.

1) add new prctl flags to prctl header file in tools dir

   This adds the new prctl flags to the include file prct.h in the
   tools directory.  This makes sure they are available for testing.

2) add KSM prctl merge test to ksm_tests

   This adds the -t option to the ksm_tests program.  The -t flag
   allows to specify if it should use madvise or prctl ksm merging.

3) add two functions for debugging merge outcome for ksm_tests

   This adds two functions to report the metrics in /proc/self/ksm_stat
   and /sys/kernel/debug/mm/ksm. The debug output is enabled with the
   -d option.

4) add KSM prctl test to ksm_functional_tests

   This adds a test to the ksm_functional_test that verifies that the
   prctl system call to enable / disable KSM works.

5) add KSM fork test to ksm_functional_test

   Add fork test to verify that the MMF_VM_MERGE_ANY flag is inherited
   by the child process.

Link: https://lkml.kernel.org/r/20230418051342.1919757-4-shr@devkernel.io
Signed-off-by: Stefan Roesch <shr@devkernel.io>
Acked-by: David Hildenbrand <david@redhat.com>
Cc: Bagas Sanjaya <bagasdotme@gmail.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Rik van Riel <riel@surriel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
tools/include/uapi/linux/prctl.h
tools/testing/selftests/mm/Makefile
tools/testing/selftests/mm/ksm_functional_tests.c
tools/testing/selftests/mm/ksm_tests.c