2023-05-22 10:20:10

by Haifeng Xu

[permalink] [raw]
Subject: [PATCH 2/2] selftests: cgroup: fix unexpected failure on test_memcg_low

Since commit f079a020ba95 ("selftests: memcg: factor out common parts
of memory.{low,min} tests"), the value used in second alloc_anon has
changed from 148M to 170M. Because memory.low allows reclaiming page
cache in child cgroups, so the memory.current is close to 30M instead
of 50M. Therefore, adjust the expected value of parent cgroup.

Fixes: f079a020ba95 ("selftests: memcg: factor out common parts of memory.{low,min} tests")
Signed-off-by: Haifeng Xu <[email protected]>
---
tools/testing/selftests/cgroup/test_memcontrol.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tools/testing/selftests/cgroup/test_memcontrol.c b/tools/testing/selftests/cgroup/test_memcontrol.c
index f4f7c0aef702..a2a90f4bfe9f 100644
--- a/tools/testing/selftests/cgroup/test_memcontrol.c
+++ b/tools/testing/selftests/cgroup/test_memcontrol.c
@@ -292,6 +292,7 @@ static int test_memcg_protection(const char *root, bool min)
char *children[4] = {NULL};
const char *attribute = min ? "memory.min" : "memory.low";
long c[4];
+ long current;
int i, attempts;
int fd;

@@ -400,7 +401,8 @@ static int test_memcg_protection(const char *root, bool min)
goto cleanup;
}

- if (!values_close(cg_read_long(parent[1], "memory.current"), MB(50), 3))
+ current = min ? MB(50) : MB(30);
+ if (!values_close(cg_read_long(parent[1], "memory.current"), current, 3))
goto cleanup;

if (!reclaim_until(children[0], MB(10)))
--
2.25.1



2023-05-23 15:14:19

by Michal Koutný

[permalink] [raw]
Subject: Re: [PATCH 2/2] selftests: cgroup: fix unexpected failure on test_memcg_low

On Mon, May 22, 2023 at 09:52:33AM +0000, Haifeng Xu <[email protected]> wrote:
> Since commit f079a020ba95 ("selftests: memcg: factor out common parts
> of memory.{low,min} tests"), the value used in second alloc_anon has
> changed from 148M to 170M. Because memory.low allows reclaiming page
> cache in child cgroups, so the memory.current is close to 30M instead
> of 50M. Therefore, adjust the expected value of parent cgroup.
>
> Fixes: f079a020ba95 ("selftests: memcg: factor out common parts of memory.{low,min} tests")
> Signed-off-by: Haifeng Xu <[email protected]>
> ---
> tools/testing/selftests/cgroup/test_memcontrol.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)

Yes, the expected value should be complement of the allocation to the
limit when reclaim is allowed.

Reviewed-by: Michal Koutn? <[email protected]>

FTR, the test_memcg_low fails after the fix still (6.3.1-2-default)
because of nonzero memory.events:low in the unprotected A/B/E group
(with memory_recursiveprot).
(That's another and long standing issues -- perhaps the reason why this
issue was hidden.)

Thanks,
Michal


Attachments:
(No filename) (1.12 kB)
signature.asc (235.00 B)
Download all attachments