selftests: cgroup: make sure reclaim target memcg is unprotected
Make sure that we ignore protection of a memcg that is the target of memcg reclaim. Link: https://lkml.kernel.org/r/20221202031512.1365483-4-yosryahmed@google.com Signed-off-by: Yosry Ahmed <yosryahmed@google.com> Reviewed-by: Roman Gushchin <roman.gushchin@linux.dev> Cc: Chris Down <chris@chrisdown.name> Cc: David Rientjes <rientjes@google.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Matthew Wilcox <willy@infradead.org> Cc: Michal Hocko <mhocko@suse.com> Cc: Muchun Song <songmuchun@bytedance.com> Cc: Shakeel Butt <shakeelb@google.com> Cc: Tejun Heo <tj@kernel.org> Cc: Vasily Averin <vasily.averin@linux.dev> Cc: Vlastimil Babka <vbabka@suse.cz> Cc: Yu Zhao <yuzhao@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
e5d64edac6
commit
1c74697776
|
@ -238,6 +238,8 @@ static int cg_test_proc_killed(const char *cgroup)
|
|||
return -1;
|
||||
}
|
||||
|
||||
static bool reclaim_until(const char *memcg, long goal);
|
||||
|
||||
/*
|
||||
* First, this test creates the following hierarchy:
|
||||
* A memory.min = 0, memory.max = 200M
|
||||
|
@ -266,6 +268,12 @@ static int cg_test_proc_killed(const char *cgroup)
|
|||
* unprotected memory in A available, and checks that:
|
||||
* a) memory.min protects pagecache even in this case,
|
||||
* b) memory.low allows reclaiming page cache with low events.
|
||||
*
|
||||
* Then we try to reclaim from A/B/C using memory.reclaim until its
|
||||
* usage reaches 10M.
|
||||
* This makes sure that:
|
||||
* (a) We ignore the protection of the reclaim target memcg.
|
||||
* (b) The previously calculated emin value (~29M) should be dismissed.
|
||||
*/
|
||||
static int test_memcg_protection(const char *root, bool min)
|
||||
{
|
||||
|
@ -385,6 +393,9 @@ static int test_memcg_protection(const char *root, bool min)
|
|||
if (!values_close(cg_read_long(parent[1], "memory.current"), MB(50), 3))
|
||||
goto cleanup;
|
||||
|
||||
if (!reclaim_until(children[0], MB(10)))
|
||||
goto cleanup;
|
||||
|
||||
if (min) {
|
||||
ret = KSFT_PASS;
|
||||
goto cleanup;
|
||||
|
|
Loading…
Reference in New Issue