From: Eric Dumazet <dada1@cosmosbay.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Christoph Lameter <christoph@lameter.com>,
Andi Kleen <andi@firstfloor.org>,
linux kernel <linux-kernel@vger.kernel.org>
Subject: [PATCH] SLAB : Use num_possible_cpus() in enable_cpucache()
Date: Wed, 21 Mar 2007 07:57:26 +0100 [thread overview]
Message-ID: <4600D756.7070500@cosmosbay.com> (raw)
In-Reply-To: <4600D04B.6030305@cosmosbay.com>
[-- Attachment #1: Type: text/plain, Size: 986 bytes --]
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>
[-- Attachment #2: slab_use_num_possible_cpus.patch --]
[-- Type: text/plain, Size: 398 bytes --]
diff --git a/mm/slab.c b/mm/slab.c
index 57f7aa4..a69d0a5 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -3975,10 +3975,8 @@ static int enable_cpucache(struct kmem_c
* 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
/*
next prev parent reply other threads:[~2007-03-21 6:57 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-20 17:12 [RFC] SLAB : NUMA cache_free_alien() very expensive because of virt_to_slab(objp); nodeid = slabp->nodeid; Eric Dumazet
2007-03-20 19:54 ` Christoph Lameter
2007-03-20 21:32 ` Andi Kleen
2007-03-20 22:09 ` Eric Dumazet
2007-03-21 0:16 ` Christoph Lameter
2007-03-21 6:27 ` Eric Dumazet
2007-03-21 6:57 ` Eric Dumazet [this message]
2007-03-21 7:21 ` [PATCH] SLAB : Dont allocate empty shared caches Eric Dumazet
2007-03-21 13:13 ` Pekka Enberg
2007-03-21 13:02 ` [PATCH] SLAB : Use num_possible_cpus() in enable_cpucache() Pekka Enberg
2007-03-21 18:45 ` Christoph Lameter
2007-03-21 7:03 ` [RFC] SLAB : NUMA cache_free_alien() very expensive because of virt_to_slab(objp); nodeid = slabp->nodeid; Christoph Lameter
2007-03-21 7:14 ` Eric Dumazet
2007-03-21 14:35 ` Christoph Lameter
2007-03-21 0:18 ` Christoph Lameter
2007-03-21 2:44 ` Andi Kleen
2007-03-21 3:10 ` Christoph Lameter
2007-03-22 21:28 ` non-NUMA cache_free_alien() (was Re: [RFC] SLAB : NUMA cache_free_alien() very expensive because of virt_to_slab(objp); nodeid = slabp->nodeid;) Siddha, Suresh B
2007-03-22 22:10 ` Christoph Lameter
2007-03-22 22:12 ` Eric Dumazet
2007-03-22 22:40 ` Siddha, Suresh B
2007-03-22 22:56 ` Eric Dumazet
2007-03-23 1:25 ` Christoph Lameter
2007-03-23 14:14 ` Andi Kleen
2007-03-23 14:12 ` Andi Kleen
2007-04-02 22:55 ` Siddha, Suresh B
2007-04-03 0:23 ` Christoph Lameter
2007-04-03 0:31 ` Siddha, Suresh B
2007-04-09 18:01 ` [patch 1/2] x86_64: set node_possible_map at runtime Siddha, Suresh B
2007-04-09 18:07 ` [patch 2/2] slab, x86_64: skip cache_free_alien() on non NUMA Siddha, Suresh B
2007-04-09 20:23 ` [patch 1/2] x86_64: set node_possible_map at runtime Andrew Morton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4600D756.7070500@cosmosbay.com \
--to=dada1@cosmosbay.com \
--cc=akpm@linux-foundation.org \
--cc=andi@firstfloor.org \
--cc=christoph@lameter.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.