diff options
author | Mel Gorman <mel@csn.ul.ie> | 2009-06-16 18:32:16 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-16 22:47:35 -0400 |
commit | b6e68bc1baed9b6972a250aba66b8c5276cf6fb1 (patch) | |
tree | 193af67b8333417347b9324e4bf9963d7cf0a872 /mm/slab.c | |
parent | 62bc62a873116805774ffd37d7f86aa4faa832b1 (diff) |
page allocator: slab: use nr_online_nodes to check for a NUMA platform
SLAB currently avoids checking a bitmap repeatedly by checking once and
storing a flag. When the addition of nr_online_nodes as a cheaper version
of num_online_nodes(), this check can be replaced by nr_online_nodes.
(Christoph did a patch that this is lifted almost verbatim from)
Signed-off-by: Christoph Lameter <cl@linux.com>
Signed-off-by: Mel Gorman <mel@csn.ul.ie>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Reviewed-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: Dave Hansen <dave@linux.vnet.ibm.com>
Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/slab.c')
-rw-r--r-- | mm/slab.c | 7 |
1 files changed, 2 insertions, 5 deletions
@@ -898,7 +898,6 @@ static void __slab_error(const char *function, struct kmem_cache *cachep, | |||
898 | */ | 898 | */ |
899 | 899 | ||
900 | static int use_alien_caches __read_mostly = 1; | 900 | static int use_alien_caches __read_mostly = 1; |
901 | static int numa_platform __read_mostly = 1; | ||
902 | static int __init noaliencache_setup(char *s) | 901 | static int __init noaliencache_setup(char *s) |
903 | { | 902 | { |
904 | use_alien_caches = 0; | 903 | use_alien_caches = 0; |
@@ -1457,10 +1456,8 @@ void __init kmem_cache_init(void) | |||
1457 | int order; | 1456 | int order; |
1458 | int node; | 1457 | int node; |
1459 | 1458 | ||
1460 | if (num_possible_nodes() == 1) { | 1459 | if (num_possible_nodes() == 1) |
1461 | use_alien_caches = 0; | 1460 | use_alien_caches = 0; |
1462 | numa_platform = 0; | ||
1463 | } | ||
1464 | 1461 | ||
1465 | for (i = 0; i < NUM_INIT_LISTS; i++) { | 1462 | for (i = 0; i < NUM_INIT_LISTS; i++) { |
1466 | kmem_list3_init(&initkmem_list3[i]); | 1463 | kmem_list3_init(&initkmem_list3[i]); |
@@ -3590,7 +3587,7 @@ static inline void __cache_free(struct kmem_cache *cachep, void *objp) | |||
3590 | * variable to skip the call, which is mostly likely to be present in | 3587 | * variable to skip the call, which is mostly likely to be present in |
3591 | * the cache. | 3588 | * the cache. |
3592 | */ | 3589 | */ |
3593 | if (numa_platform && cache_free_alien(cachep, objp)) | 3590 | if (nr_online_nodes > 1 && cache_free_alien(cachep, objp)) |
3594 | return; | 3591 | return; |
3595 | 3592 | ||
3596 | if (likely(ac->avail < ac->limit)) { | 3593 | if (likely(ac->avail < ac->limit)) { |