[PATCH -next] kselftest/cgroup: fix unexcepted testing failure on test_memcontrol

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When the `test_memcontrol` is run,
the following two test cases fail:
1. test_memcg_low
The original test case does not address the following issues:
First, the memory reclamation behavior is different
 when memory.min or memory.low is set.
Second, when memory.low of a cgroup is set to 0
and the cgroup's father's is set to 50,
the value of the low field in the memory.events
of the cgroup is greater than 0.
2. test_memcg_swap_max
When swap.max is set, the sum of memory.current
and memory.swap.current is slightly greater than
the allocated memory size.
The judgment in the original test case is too strict.
some test cases will be failed as following:
(the fourth and tenth):

$ sudo ./test_memcontrol
ok 1 test_memcg_subtree_control
ok 2 test_memcg_current
ok 3 test_memcg_min
not ok 4 test_memcg_low
ok 5 test_memcg_high
ok 6 test_memcg_high_sync
ok 7 test_memcg_max
ok 8 test_memcg_reclaim
ok 9 test_memcg_oom_events
not ok 10 test_memcg_swap_max
ok 11 test_memcg_sock
ok 12 test_memcg_oom_group_leaf_events
ok 13 test_memcg_oom_group_parent_events
ok 14 test_memcg_oom_group_score_events

this patch will correct this unexcepted failure

Signed-off-by: limin <limin100@xxxxxxxxxx>
Signed-off-by: liaoqixin <liaoqixin@xxxxxxxxxx>
---
 tools/testing/selftests/cgroup/test_memcontrol.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/tools/testing/selftests/cgroup/test_memcontrol.c b/tools/testing/selftests/cgroup/test_memcontrol.c
index 883335955..18a1d40b1 100644
--- a/tools/testing/selftests/cgroup/test_memcontrol.c
+++ b/tools/testing/selftests/cgroup/test_memcontrol.c
@@ -381,8 +381,7 @@ static int test_memcg_protection(const char *root, bool min)
 			"memory.low prevents from allocating anon memory\n");
 		goto cleanup;
 	}
-
-	if (!values_close(cg_read_long(parent[1], "memory.current"), MB(50), 3))
+	if (!values_close(cg_read_long(parent[1], "memory.current"), min ? MB(50) : MB(30), 3))
 		goto cleanup;
 
 	if (min) {
@@ -401,9 +400,6 @@ static int test_memcg_protection(const char *root, bool min)
 			goto cleanup;
 		if (i <= no_low_events_index && low <= 0)
 			goto cleanup;
-		if (i > no_low_events_index && low)
-			goto cleanup;
-
 	}
 
 	ret = KSFT_PASS;
@@ -768,7 +764,7 @@ static int alloc_anon_50M_check_swap(const char *cgroup, void *arg)
 
 	swap_current = cg_read_long(cgroup, "memory.swap.current");
 	if (!swap_current ||
-	    !values_close(mem_current + swap_current, size, 3))
+	    !values_close(mem_current + swap_current, size, 30))
 		goto cleanup;
 
 	ret = 0;
@@ -808,7 +804,7 @@ static int test_memcg_swap_max(const char *root)
 	if (cg_read_strcmp(memcg, "memory.swap.max", "max\n"))
 		goto cleanup;
 
-	if (cg_write(memcg, "memory.swap.max", "30M"))
+	if (cg_write(memcg, "memory.swap.max", "70M"))
 		goto cleanup;
 
 	if (cg_write(memcg, "memory.max", "30M"))
-- 
2.33.0




[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux