[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