From: Eric Dumazet <dada1@cosmosbay.com>
To: Andi Kleen <ak@suse.de>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Shrinks sizeof(files_struct) and better layout
Date: Wed, 04 Jan 2006 12:41:59 +0100 [thread overview]
Message-ID: <43BBB487.8030704@cosmosbay.com> (raw)
In-Reply-To: <200601041222.09304.ak@suse.de>
Andi Kleen a écrit :
>
> Total data of all objects together. That's because caches always get their
> own pages and cannot share them with other caches.
OK for this part.
> The overhead of the kmem_cache_t by itself is negligible.
This seems a common misconception among kernel devs (even the best ones Andi :) )
On SMP (and/or NUMA) machines : overhead of kmem_cache_t is *big*
See enable_cpucache in mm/slab.c for 'limit' determination :
if (cachep->objsize > 131072)
limit = 1;
else if (cachep->objsize > PAGE_SIZE)
limit = 8;
else if (cachep->objsize > 1024)
limit = 24;
else if (cachep->objsize > 256)
limit = 54;
else
limit = 120;
On a 64 bits machines, 120*sizeof(void*) = 120*8 = 960
So for small objects (<= 256 bytes), you end with a sizeof(array_cache) = 1024
bytes per cpu
If 16 CPUS : 16*1024 = 16 Kbytes + all other kmem_cache structures : (If you
have a lot of Memory Nodes, then it can be *very* big too).
If you know that no more than 100 objects are used in 99% of setups, then a
dedicated cache is overkill, even locking 100 pages because of extreme
fragmentation is better.
Probability that a *lot* of tasks are created at once and killed at once is
close to 0 during a machine lifetime.
Maybe we can introduce an ultra basic memory allocator for such objects
(without CPU caches, node caches), so that the memory overhead is small.
Hitting a spinlock at thread creation/deletion time is not that time critical.
Eric
next prev parent reply other threads:[~2006-01-04 11:42 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20051108185349.6e86cec3.akpm@osdl.org>
[not found] ` <437226B1.4040901@cosmosbay.com>
[not found] ` <20051109220742.067c5f3a.akpm@osdl.org>
[not found] ` <4373698F.9010608@cosmosbay.com>
2006-01-04 0:06 ` [PATCH] Shrinks sizeof(files_struct) and better layout Eric Dumazet
2006-01-04 9:11 ` Jan Engelhardt
2006-01-04 10:12 ` Eric Dumazet
2006-01-04 10:28 ` Folkert van Heusden
2006-01-04 10:45 ` Andi Kleen
2006-01-04 11:13 ` Eric Dumazet
2006-01-04 11:15 ` Andi Kleen
2006-01-04 11:19 ` Eric Dumazet
2006-01-04 11:22 ` Andi Kleen
2006-01-04 11:41 ` Eric Dumazet [this message]
2006-01-04 11:58 ` Andi Kleen
2006-01-06 3:01 ` David Lang
2006-01-06 6:35 ` Eric Dumazet
2006-01-06 7:26 ` David Lang
2006-01-06 7:37 ` Eric Dumazet
2006-01-06 8:28 ` David Lang
2006-01-04 11:45 ` Andrew Morton
2006-01-04 13:14 ` Eric Dumazet
2006-01-04 23:24 ` [2.6 patch] Define BITS_PER_BYTE Adrian Bunk
2006-01-05 7:03 ` Jan Engelhardt
2006-01-05 15:18 ` Bryan O'Sullivan
2006-01-05 19:19 ` H. Peter Anvin
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=43BBB487.8030704@cosmosbay.com \
--to=dada1@cosmosbay.com \
--cc=ak@suse.de \
--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.