Messages in this thread | | | Date | Wed, 18 Oct 2023 16:06:35 +0200 | Subject | Re: [PATCH v3 3/5] mm: kmem: make memcg keep a reference to the original objcg | From | Vlastimil Babka <> |
| |
On 10/17/23 00:18, Roman Gushchin wrote: > Keep a reference to the original objcg object for the entire life > of a memcg structure. > > This allows to simplify the synchronization on the kernel memory > allocation paths: pinning a (live) memcg will also pin the > corresponding objcg. > > The memory overhead of this change is minimal because object cgroups > usually outlive their corresponding memory cgroups even without this > change, so it's only an additional pointer per memcg. > > Signed-off-by: Roman Gushchin (Cruise) <roman.gushchin@linux.dev> > Tested-by: Naresh Kamboju <naresh.kamboju@linaro.org> > Acked-by: Shakeel Butt <shakeelb@google.com>
Forgot to point out typo:
> --- > include/linux/memcontrol.h | 8 +++++++- > mm/memcontrol.c | 5 +++++ > 2 files changed, 12 insertions(+), 1 deletion(-) > > diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h > index ab94ad4597d0..277690af383d 100644 > --- a/include/linux/memcontrol.h > +++ b/include/linux/memcontrol.h > @@ -299,7 +299,13 @@ struct mem_cgroup { > > #ifdef CONFIG_MEMCG_KMEM > int kmemcg_id; > - struct obj_cgroup __rcu *objcg; > + /* > + * memcg->objcg is wiped out as a part of the objcg repaprenting
reparenting ^
> + * process. memcg->orig_objcg preserves a pointer (and a reference) > + * to the original objcg until the end of live of memcg. > + */ > + struct obj_cgroup __rcu *objcg; > + struct obj_cgroup *orig_objcg; > /* list of inherited objcgs, protected by objcg_lock */ > struct list_head objcg_list; > #endif > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index 0605e45bd4a2..d90cc19e4113 100644
| |