On 5/26/20 7:53 PM, Roman Gushchin wrote: > On Mon, May 25, 2020 at 05:07:22PM +0200, Vlastimil Babka wrote: >> On 4/22/20 10:46 PM, Roman Gushchin wrote: >> > diff --git a/mm/slab.h b/mm/slab.h >> > index 44def57f050e..525e09e05743 100644 >> > --- a/mm/slab.h >> > +++ b/mm/slab.h >> ... >> > @@ -636,8 +684,8 @@ static inline void slab_post_alloc_hook(struct kmem_cache *s, gfp_t flags, >> > s->flags, flags); >> > } >> > >> > - if (memcg_kmem_enabled()) >> > - memcg_kmem_put_cache(s); >> > + if (!is_root_cache(s)) >> > + memcg_slab_post_alloc_hook(s, objcg, size, p); >> > } >> > >> > #ifndef CONFIG_SLOB >> >> Keep also the memcg_kmem_enabled() static key check, like elsewhere? >> > > Ok, will add, it can speed things up a little bit. My only concern is that > the code is not ready for memcg_kmem_enabled() turning negative after being positive. > But it's not a concern, right? > > Actually, we can simplify memcg_kmem_enabled() mechanics and enable it > only once as soon as the first memcg is fully initialized. I don't think there > is any value in tracking the actual number of active memcgs. Yeah, it should be acceptable that once the key is enabled after boot, there's no way back until reboot. > Thanks! >