mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 08:33:17 +02:00
SLAB: use num_possible_cpus() in enable_cpucache()
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: Eric Dumazet <dada1@cosmosbay.com>
Acked-by: Pekka Enberg <penberg@cs.helsinki.fi>
Acked-by: Christoph Lameter <clameter@sgi.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
6ce745ed39
commit
364fbb29a0
|
|
@ -4033,10 +4033,8 @@ static int enable_cpucache(struct kmem_cache *cachep)
|
|||
* to a larger limit. Thus disabled by default.
|
||||
*/
|
||||
shared = 0;
|
||||
#ifdef CONFIG_SMP
|
||||
if (cachep->buffer_size <= PAGE_SIZE)
|
||||
if (cachep->buffer_size <= PAGE_SIZE && num_possible_cpus() > 1)
|
||||
shared = 8;
|
||||
#endif
|
||||
|
||||
#if DEBUG
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user