mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-08 06:44:35 +08:00
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;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool reclaim_until(const char *memcg, long goal);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* First, this test creates the following hierarchy:
|
* First, this test creates the following hierarchy:
|
||||||
* A memory.min = 0, memory.max = 200M
|
* 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:
|
* unprotected memory in A available, and checks that:
|
||||||
* a) memory.min protects pagecache even in this case,
|
* a) memory.min protects pagecache even in this case,
|
||||||
* b) memory.low allows reclaiming page cache with low events.
|
* 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)
|
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))
|
if (!values_close(cg_read_long(parent[1], "memory.current"), MB(50), 3))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
|
if (!reclaim_until(children[0], MB(10)))
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
if (min) {
|
if (min) {
|
||||||
ret = KSFT_PASS;
|
ret = KSFT_PASS;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
Loading…
Reference in New Issue
Block a user