Skip to content
  • Roman Gushchin's avatar
    percpu: rework memcg accounting · faf65dde
    Roman Gushchin authored
    
    
    The current implementation of the memcg accounting of the percpu
    memory is based on the idea of having two separate sets of chunks for
    accounted and non-accounted memory. This approach has an advantage
    of not wasting any extra memory for memcg data for non-accounted
    chunks, however it complicates the code and leads to a higher chunks
    number due to a lower chunk utilization.
    
    Instead of having two chunk types it's possible to declare all* chunks
    memcg-aware unless the kernel memory accounting is disabled globally
    by a boot option. The size of objcg_array is usually small in
    comparison to chunks themselves (it obviously depends on the number of
    CPUs), so even if some chunk will have no accounted allocations, the
    memory waste isn't significant and will likely be compensated by
    a higher chunk utilization. Also, with time more and more percpu
    allocations will likely become accounted.
    
    * The first chunk is initialized before the memory cgroup subsystem,
      so we don't know for sure whether we need to allocate obj_cgroups.
      Because it's small, let's make it free for use. Then we don't need
      to allocate obj_cgroups for it.
    
    Signed-off-by: default avatarRoman Gushchin <guro@fb.com>
    Signed-off-by: default avatarDennis Zhou <dennis@kernel.org>
    faf65dde