• Christoph Lameter's avatar
    SLUB: Use this_cpu operations in slub · 9dfc6e68
    Christoph Lameter authored
    Using per cpu allocations removes the needs for the per cpu arrays in the
    kmem_cache struct. These could get quite big if we have to support systems
    with thousands of cpus. The use of this_cpu_xx operations results in:
    
    1. The size of kmem_cache for SMP configuration shrinks since we will only
       need 1 pointer instead of NR_CPUS. The same pointer can be used by all
       processors. Reduces cache footprint of the allocator.
    
    2. We can dynamically size kmem_cache according to the actual nodes in the
       system meaning less memory overhead for configurations that may potentially
       support up to 1k NUMA nodes / 4k cpus.
    
    3. We can remove the diddle widdle with allocating and releasing of
       kmem_cache_cpu structures when bringing up and shutting down cpus. The cpu
       alloc logic will do it all for us. Removes some portions of the cpu hotplug
       functionality.
    
    4. Fastpath performance increases since per cpu pointer lookups and
       address calculations are avoided.
    
    V7-V8
    - Convert missed get_cpu_slab() under CONFIG_SLUB_STATS
    Signed-off-by: default avatarChristoph Lameter <cl@linux-foundation.org>
    Signed-off-by: default avatarPekka Enberg <penberg@cs.helsinki.fi>
    9dfc6e68
slub.c 110 KB