From: Matthew Dobson <colpatch@us.ibm.com>
To: Pekka Enberg <penberg@cs.helsinki.fi>
Cc: linux-kernel@vger.kernel.org, sri@us.ibm.com, andrea@suse.de,
pavel@suse.cz, linux-mm@kvack.org
Subject: Re: [patch 8/9] slab - Add *_mempool slab variants
Date: Thu, 26 Jan 2006 14:40:01 -0800 [thread overview]
Message-ID: <43D94FC1.4050708@us.ibm.com> (raw)
In-Reply-To: <84144f020601252341k62c0c6fck57f3baa290f4430@mail.gmail.com>
Pekka Enberg wrote:
> Hi Matthew,
>
> On 1/25/06, Matthew Dobson <colpatch@us.ibm.com> wrote:
>
>>+extern void *__kmalloc(size_t, gfp_t, mempool_t *);
>
>
> If you really need to do this, please ntoe that you're adding an extra
> parameter push for the nominal case where mempool is not required. The
> compiler is unable to optimize it away. It's better that you create a
> new entry point for the mempool case in mm/slab.c rather than
> overloading __kmalloc() et al. See the following patch that does that
> sort of thing:
>
> http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.16-rc1/2.6.16-rc1-mm3/broken-out/slab-fix-kzalloc-and-kstrdup-caller-report-for-config_debug_slab.patch
At some level non-mempool users are going to have to use the same functions
as mempool users. As you can see in patch 9/9, all we really need is to
get the mempool_t pointer down to cache_grow() where the *actual* cache
growth happens. Unfortunately, between the external callers (kmalloc(),
kmem_cache_alloc(), etc) and cache_grow() there are several functions. I
will try to follow an approach similar to the patch you linked to above for
this patch (modifying the externally callable functions), but I don't think
the follow-on patch can change much. The overhead of passing along a NULL
pointer should not be too onerous.
> Now as for the rest of the patch, are you sure you want to reserve
> whole pages for each critical allocation that cannot be satisfied by
> the slab allocator? Wouldn't it be better to use something like the
> slob allocator to allocate from the mempool pages? That way you
> wouldn't have to make the slab allocator mempool aware at all, simply
> make your kmalloc_mempool first try the slab allocator and if it
> returns NULL, go for the critical pool. All this in preferably
> separate file so you don't make mm/slab.c any more complex than it is
> now.
I decided that using a whole page allocator would be the easiest way to
cover the most common uses of slab/kmalloc, but your idea is very
interesting. My immediate concern would be trying to determine, at kfree()
time, what was allocated by the slab allocator and what was allocated by
the critical pool. I will give this approach more thought, as the idea of
completely separating the critical pool and slab allocator is attractive.
Thanks!
-Matt
next prev parent reply other threads:[~2006-01-26 22:40 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20060125161321.647368000@localhost.localdomain>
2006-01-25 19:39 ` [patch 1/9] mempool - Add page allocator Matthew Dobson
2006-01-25 19:39 ` [patch 2/9] mempool - Use common mempool " Matthew Dobson
2006-01-25 19:40 ` [patch 4/9] mempool - Update mempool page allocator user Matthew Dobson
2006-01-25 19:40 ` [patch 5/9] mempool - Update kmalloc mempool users Matthew Dobson
2006-01-25 19:40 ` [patch 6/9] mempool - Update kzalloc " Matthew Dobson
2006-01-26 7:30 ` Pekka Enberg
2006-01-26 22:03 ` Matthew Dobson
2006-01-25 19:40 ` [patch 8/9] slab - Add *_mempool slab variants Matthew Dobson
2006-01-26 7:41 ` Pekka Enberg
2006-01-26 22:40 ` Matthew Dobson [this message]
2006-01-27 7:09 ` Pekka J Enberg
2006-01-27 7:10 ` Pekka J Enberg
2006-01-25 19:40 ` [patch 9/9] slab - Implement single mempool backing for slab allocator Matthew Dobson
2006-01-26 8:11 ` Pekka Enberg
2006-01-26 22:48 ` Matthew Dobson
2006-01-27 7:22 ` Pekka J Enberg
2006-01-25 23:51 ` [patch 1/9] mempool - Add page allocator Matthew Dobson
2006-01-25 23:51 ` [patch 3/9] mempool - Make mempools NUMA aware Matthew Dobson
2006-01-26 17:54 ` Christoph Lameter
2006-01-26 22:57 ` Matthew Dobson
2006-01-26 23:15 ` Christoph Lameter
2006-01-26 23:24 ` Matthew Dobson
2006-01-26 23:29 ` Christoph Lameter
2006-01-27 0:15 ` Matthew Dobson
2006-01-27 0:21 ` Christoph Lameter
2006-01-27 0:34 ` Matthew Dobson
2006-01-27 0:39 ` Christoph Lameter
2006-01-27 0:44 ` Matthew Dobson
2006-01-27 0:57 ` Christoph Lameter
2006-01-27 1:07 ` Andi Kleen
2006-01-27 10:51 ` Paul Jackson
2006-01-28 1:00 ` Matthew Dobson
2006-01-28 5:08 ` Paul Jackson
2006-01-28 8:16 ` Pavel Machek
2006-01-28 16:14 ` Sridhar Samudrala
2006-01-28 16:41 ` Pavel Machek
2006-01-28 16:53 ` Sridhar Samudrala
2006-01-28 22:59 ` Pavel Machek
2006-01-28 23:10 ` Let the flames begin... [was Re: [patch 3/9] mempool - Make mempools NUMA aware] Pavel Machek
2006-01-27 0:23 ` [patch 3/9] mempool - Make mempools NUMA aware Benjamin LaHaise
2006-01-27 0:35 ` Matthew Dobson
2006-01-27 3:23 ` Benjamin LaHaise
2006-01-28 1:08 ` Matthew Dobson
2006-01-25 23:51 ` [patch 7/9] mempool - Update other mempool users Matthew Dobson
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=43D94FC1.4050708@us.ibm.com \
--to=colpatch@us.ibm.com \
--cc=andrea@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=pavel@suse.cz \
--cc=penberg@cs.helsinki.fi \
--cc=sri@us.ibm.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox