From: David Vernet <void@manifault.com>
To: "Michal Koutný" <mkoutny@suse.com>
Cc: akpm@linux-foundation.org, tj@kernel.org,
roman.gushchin@linux.dev, linux-kernel@vger.kernel.org,
linux-mm@kvack.org, cgroups@vger.kernel.org, hannes@cmpxchg.org,
mhocko@kernel.org, shakeelb@google.com, kernel-team@fb.com,
Richard Palethorpe <rpalethorpe@suse.com>
Subject: Re: [PATCH v2 2/5] cgroup: Account for memory_recursiveprot in test_memcg_low()
Date: Fri, 6 May 2022 09:40:15 -0700 [thread overview]
Message-ID: <20220506164015.fsdsuv226nhllos5@dev0025.ash9.facebook.com> (raw)
In-Reply-To: <20220429092620.GA23621@blackbody.suse.cz>
Sorry for the delayed reply, Michal. I've been at LSFMM this week.
On Fri, Apr 29, 2022 at 11:26:20AM +0200, Michal Koutný wrote:
> I still think that the behavior when there's no protection left for the
> memory.low == 0 child, there should be no memory.low events (not just
> uncounted but not happening) and test should not accept this (even
> though it's the current behavior).
That's fair. I think part of the problem here is that in general, the
memcontroller itself is quite heuristic, so it's tough to write tests that
provide useful coverage while also being sufficiently flexible to avoid
flakiness and over-prescribing expected behavior. In this case I think it's
probably correct that the memory.low == 0 child shouldn't inherit
protection from its parent under any circumstances due to its siblings
overcommitting the parent's protection, but I also wonder if it's really
necessary to enforce that. If you look at how much memory A/B/E gets at the
end of the reclaim, it's still far less than 1MB (though should it be 0?).
I'd be curious to hear what Johannes thinks.
> What might improve the test space would be to have two configs like
>
> Original one (simplified here)
> parent memory.low=50M memory.current=100M
> ` child1 memory.low=50M memory.current=50M
> ` child2 memory.low=0M memory.current=50M
>
> New one (checks events due to recursive protection)
> parent memory.low=50M memory.current=100M
> ` child1 memory.low=40M memory.current=50M
> ` child2 memory.low=0M memory.current=50M
>
> The second config assigns recursive protection to child2 and should
> therefore cause memory.low events in child2 (with memory_recursiveprot
> enabled of course).
Something like this would work, though I think it's useful to specifically
validate the behavior of the memcontroller when the children overcommit the
parent's memory.low protection, which the current test does. So I'm
inclined to keep this testcase, and add your next suggestion:
> Or alternative new one (checks events due to recursive protection)
> parent memory.low=50M memory.current=100M
> ` child1 memory.low=0M memory.current=50M
> ` child2 memory.low=0M memory.current=50M
This definitely sounds to me like a useful testcase to add, and I'm happy
to do so in a follow-on patch. If we added this, do you think we need to
keep the check for memory.low events for the memory.low == 0 child in the
overcommit testcase? It arguably helped to catch the SWAP_CLUSTER_MAX
rounding issue you pointed out. Again, curious to hear what Johannes thinks
as well.
Thanks,
David
next prev parent reply other threads:[~2022-05-06 16:40 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-23 15:56 [PATCH v2 0/5] Fix bugs in memcontroller cgroup tests David Vernet
2022-04-23 15:56 ` [PATCH v2 1/5] cgroups: Refactor children cgroups in memcg tests David Vernet
2022-04-26 1:56 ` Roman Gushchin
2022-04-23 15:56 ` [PATCH v2 2/5] cgroup: Account for memory_recursiveprot in test_memcg_low() David Vernet
2022-04-27 14:09 ` Michal Koutný
2022-04-29 1:03 ` David Vernet
2022-04-29 9:26 ` Michal Koutný
2022-05-06 16:40 ` David Vernet [this message]
2022-05-09 15:09 ` Johannes Weiner
2022-05-10 0:44 ` Andrew Morton
2022-05-10 17:43 ` Michal Koutný
2022-05-11 17:53 ` Johannes Weiner
2022-05-12 17:27 ` Michal Koutný
2022-04-23 15:56 ` [PATCH v2 3/5] cgroup: Account for memory_localevents in test_memcg_oom_group_leaf_events() David Vernet
2022-04-23 15:56 ` [PATCH v2 4/5] cgroup: Removing racy check in test_memcg_sock() David Vernet
2022-04-23 15:56 ` [PATCH v2 5/5] cgroup: Fix racy check in alloc_pagecache_max_30M() helper function David Vernet
2022-05-12 17:04 ` [PATCH v2 0/5] Fix bugs in memcontroller cgroup tests Michal Koutný
2022-05-12 17:30 ` David Vernet
2022-05-12 17:44 ` David Vernet
2022-05-13 17:18 ` [PATCH 0/4] memcontrol selftests fixups Michal Koutný
2022-05-13 17:18 ` [PATCH 1/4] selftests: memcg: Fix compilation Michal Koutný
2022-05-13 17:40 ` David Vernet
2022-05-13 18:53 ` Roman Gushchin
2022-05-13 19:09 ` Roman Gushchin
2022-05-13 17:18 ` [PATCH 2/4] selftests: memcg: Expect no low events in unprotected sibling Michal Koutný
2022-05-13 17:42 ` David Vernet
2022-05-13 18:54 ` Roman Gushchin
2022-05-18 15:54 ` Michal Koutný
2022-05-13 17:18 ` [PATCH 3/4] selftests: memcg: Adjust expected reclaim values of protected cgroups Michal Koutný
2022-05-13 18:52 ` Roman Gushchin
2022-05-13 17:18 ` [PATCH 4/4] selftests: memcg: Remove protection from top level memcg Michal Koutný
2022-05-13 18:59 ` Roman Gushchin
2022-05-18 0:24 ` Andrew Morton
2022-05-18 0:52 ` Roman Gushchin
2022-05-18 15:44 ` Michal Koutný
2022-05-13 19:14 ` David Vernet
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220506164015.fsdsuv226nhllos5@dev0025.ash9.facebook.com \
--to=void@manifault.com \
--cc=akpm@linux-foundation.org \
--cc=cgroups@vger.kernel.org \
--cc=hannes@cmpxchg.org \
--cc=kernel-team@fb.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@kernel.org \
--cc=mkoutny@suse.com \
--cc=roman.gushchin@linux.dev \
--cc=rpalethorpe@suse.com \
--cc=shakeelb@google.com \
--cc=tj@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox