[LTP] [PATCH] process_madvise01: running the test in mem_cg
Petr Vorel
pvorel@suse.cz
Thu Jan 2 15:59:03 CET 2025
Hi Li,
> The MADV_PAGEOUT behavior in the kernel is advisory and may skip
> swapping if the system has sufficient free RAM, even when the
> advice is explicitly requested. This causes sporadic false positives
> in our CI, particularly on systems with large amounts of RAM:
> process_madvise01.c:38: TINFO: Allocate memory: 1048576 bytes
> process_madvise01.c:99: TINFO: Reclaim memory using MADV_PAGEOUT
> process_madvise01.c:62: TFAIL: Expect: Most of the memory has been swapped out: 0kB out of 1024kB
> To address this, the patch confines the test to a memory cgroup
> with configured limits for memory.max and memory.swap.max, improving
> control over memory and swap usage. This reduces the likelihood of
> false positives caused by system-wide memory conditions.
Out of curiosity, on how many RAM does it fail? And is it arch specific?
...
> +++ b/testcases/kernel/syscalls/process_madvise/process_madvise01.c
> @@ -23,7 +23,9 @@
> #include "lapi/syscalls.h"
> #include "process_madvise.h"
> -#define MEM_CHILD (1 * TST_MB)
> +#define MEM_LIMIT (100 * TST_MB)
> +#define MEMSW_LIMIT (200 * TST_MB)
> +#define MEM_CHILD (1 * TST_MB)
...
> @@ -123,7 +131,9 @@ static struct tst_test test = {
> .min_kver = "5.10",
> .needs_checkpoints = 1,
> .needs_root = 1,
> - .min_swap_avail = MEM_CHILD / TST_MB,
> + .min_mem_avail = 2 * MEM_LIMIT / TST_MB,
Requiring 200 MB for test looks LGTM.
Reviewed-by: Petr Vorel <pvorel@suse.cz>
Kind regards,
Petr
> + .min_swap_avail = 2 * MEM_CHILD / TST_MB,
> + .needs_cgroup_ctrls = (const char *const []){ "memory", NULL },
More information about the ltp
mailing list