lkml.org 
[lkml]   [2020]   [Feb]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v2 21/28] mm: memcg/slab: use a single set of kmem_caches for all memory cgroups
    On Mon, Jan 27, 2020 at 09:34:46AM -0800, Roman Gushchin wrote:
    > This is fairly big but mostly red patch, which makes all non-root
    > slab allocations use a single set of kmem_caches instead of
    > creating a separate set for each memory cgroup.
    >
    > Because the number of non-root kmem_caches is now capped by the number
    > of root kmem_caches, there is no need to shrink or destroy them
    > prematurely. They can be perfectly destroyed together with their
    > root counterparts. This allows to dramatically simplify the
    > management of non-root kmem_caches and delete a ton of code.

    This is definitely going in the right direction. But it doesn't quite
    explain why we still need two sets of kmem_caches?

    In the old scheme, we had completely separate per-cgroup caches with
    separate slab pages. If a cgrouped process wanted to allocate a slab
    object, we'd go to the root cache and used the cgroup id to look up
    the right cgroup cache. On slab free we'd use page->slab_cache.

    Now we have slab pages that have a page->objcg array. Why can't all
    allocations go through a single set of kmem caches? If an allocation
    is coming from a cgroup and the slab page the allocator wants to use
    doesn't have an objcg array yet, we can allocate it on the fly, no?

    \
     
     \ /
      Last update: 2020-02-03 20:50    [W:2.335 / U:0.064 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site