[2/2] selftests: cgroup: fix unexpected failure on test_memcg_low

Message ID 20230522095233.4246-2-haifeng.xu@shopee.com
State New
Headers
Series [1/2] mm/memcontrol: fix typo in comment |

Commit Message

Haifeng Xu May 22, 2023, 9:52 a.m. UTC
  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 <haifeng.xu@shopee.com>
---
 tools/testing/selftests/cgroup/test_memcontrol.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
  

Comments

Michal Koutný May 23, 2023, 2:40 p.m. UTC | #1
On Mon, May 22, 2023 at 09:52:33AM +0000, Haifeng Xu <haifeng.xu@shopee.com> 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 <haifeng.xu@shopee.com>
> ---
>  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ý <mkoutny@suse.com>

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
  

Patch

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)))