• Eric Dumazet's avatar
    SLAB: use num_possible_cpus() in enable_cpucache() · 364fbb29
    Eric Dumazet authored
    The existing comment in mm/slab.c is *perfect*, so I reproduce it :
    
             /*
              * CPU bound tasks (e.g. network routing) can exhibit cpu bound
              * allocation behaviour: Most allocs on one cpu, most free operations
              * on another cpu. For these cases, an efficient object passing between
              * cpus is necessary. This is provided by a shared array. The array
              * replaces Bonwick's magazine layer.
              * On uniprocessor, it's functionally equivalent (but less efficient)
              * to a larger limit. Thus disabled by default.
              */
    
    As most shiped linux kernels are now compiled with CONFIG_SMP, there is no way
    a preprocessor #if can detect if the machine is UP or SMP. Better to use
    num_possible_cpus().
    
    This means on UP we allocate a 'size=0 shared array', to be more efficient.
    
    Another patch can later avoid the allocations of 'empty shared arrays', to
    save some memory.
    Signed-off-by: default avatarEric Dumazet <dada1@cosmosbay.com>
    Acked-by: default avatarPekka Enberg <penberg@cs.helsinki.fi>
    Acked-by: default avatarChristoph Lameter <clameter@sgi.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    364fbb29
slab.c 117 KB