[Devel] [PATCH vz10 v5 0/2] Add selftests to verify cache limiting and numa migration
Pavel Tikhomirov
ptikhomirov at virtuozzo.com
Fri Dec 12 13:18:49 MSK 2025
Reviewed-by: Pavel Tikhomirov <ptikhomirov at virtuozzo.com>
On 12/8/25 19:46, Dmitry Sepp wrote:
> The patches introduce a set of tests used to verify the following functionality:
> - Controlling the amount of memory used by page cache with memory.cache
> - Enforcing migration of cgroup's pages to one or multiple target NUMA nodes
> with memory.numa_migrate.
>
> Changes in v5:
> - Replace EXPECT with ASSERT.
> - Drop crc32 as it is slow (~1 GiB/s on the test machine) and prevents the test
> region pages from becoming "active" enough.
> - Improve error checking by explicitly asserting a positive return code instead
> of asserting absence of a negative error code (where possible).
> - Use periodic stat checks with timeouts instead of sleep() calls.
> - Remove the expected-to-fail markers from the "inactive" tests. The
> inactive_anon test is executed with MGLRU (lru_gen) disabled. See the commit
> message for more details.
> - Unify verification functionality for active and inactive pages in
> numa_migrate.
> - Provide some test description at the beginning of the source files.
>
> Notes for reviewers:
> - The kselftest harness is designed in such a way that it does not allow to
> skip any tests that have been registered before the execution started. This
> means, there is no safe and sane way to interrupt the overall flow if one of
> the tests has failed. I tried using a state variable but each of the
> individual tests seems to be executed in a subprocess so if it fails it has
> no way to change anything outside. I also tried creating a marker file but it
> is also troublesome as the main harness function terminates the calling
> process on its own without letting the external caller perform any cleanup
> (e.g. to remove the marker file after all tests have finished).
> - Regarding the ASSERT macro and invocation of the teardown function:
> - Teardown is not automatically called if ASSERT is used in FIXTURE_SETUP.
> - Teardown is called if ASSERT is used from the test functions defined with
> the TEST macro and its variants.
> - Teardown will be called if ASSERT is used from any non-harness-macro
> defined function if the "context" variables (_metadata etc.) are visible
> within the function's scope and the function is called from the process
> running the main test function.
> - Teardown can theoretically be called if ASSERT is used from a child process
> started by the main test function if "context" is passed to the function(s)
> executed by the child process but in reality it makes little sense as it is
> possible that teardown would be then executed twice leading to potentially
> harmful outcome (once by the ASSERT plumbing from the child process and
> once by the main test function because the child has failed).
>
>
> Dmitry Sepp (2):
> selftests: cgroup: test page cache limiting feature
> selftests: cgroup: test numa migration of lruvecs
>
> tools/testing/selftests/cgroup/Makefile | 4 +
> tools/testing/selftests/cgroup/config | 4 +
> tools/testing/selftests/cgroup/test_cache.c | 327 +++++++
> .../selftests/cgroup/test_numa_migrate.c | 823 ++++++++++++++++++
> 4 files changed, 1158 insertions(+)
> create mode 100644 tools/testing/selftests/cgroup/test_cache.c
> create mode 100644 tools/testing/selftests/cgroup/test_numa_migrate.c
>
--
Best regards, Pavel Tikhomirov
Senior Software Developer, Virtuozzo.
More information about the Devel
mailing list