Re: [PATCH v3 4/5] mm: memcg: charge memcg percpu memory to the parent cgroup

From: Andrew Morton
Date: Fri Aug 07 2020 - 00:16:08 EST


On Wed, 29 Jul 2020 19:10:39 +0200 Michal Koutný <mkoutny@xxxxxxxx> wrote:

> Hello.
>
> On Tue, Jun 23, 2020 at 11:45:14AM -0700, Roman Gushchin <guro@xxxxxx> wrote:
> > Because the size of memory cgroup internal structures can dramatically
> > exceed the size of object or page which is pinning it in the memory, it's
> > not a good idea to simple ignore it. It actually breaks the isolation
> > between cgroups.
> No doubt about accounting the memory if it's significant amount.
>
> > Let's account the consumed percpu memory to the parent cgroup.
> Why did you choose charging to the parent of the created cgroup?
>
> Should the charge go the cgroup _that is creating_ the new memcg?
>
> One reason is that there are the throttling mechanisms for memory limits
> and those are better exercised when the actor and its memory artefact
> are the same cgroup, aren't they?
>
> The second reason is based on the example Dlegation Containment
> (Documentation/admin-guide/cgroup-v2.rst)
>
> > For an example, let's assume cgroups C0 and C1 have been delegated to
> > user U0 who created C00, C01 under C0 and C10 under C1 as follows and
> > all processes under C0 and C1 belong to U0::
> >
> > ~~~~~~~~~~~~~ - C0 - C00
> > ~ cgroup ~ \ C01
> > ~ hierarchy ~
> > ~~~~~~~~~~~~~ - C1 - C10
>
> Thanks to permissions a task running in C0 creating a cgroup in C1 would
> deplete C1's supply victimizing tasks inside C1.

These week-old issues appear to be significant. Roman? Or someone
else?