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?