From: Ingo Molnar <mingo@elte.hu>
To: Pekka Enberg <penberg@cs.helsinki.fi>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Andrew Morton <akpm@linux-foundation.org>,
Matt Mackall <mpm@selenic.com>, "Rafael J. Wysocki" <rjw@sisk.pl>,
LKML <linux-kernel@vger.kernel.org>,
Christoph Lameter <clameter@sgi.com>
Subject: Re: tipc_init(), WARNING: at arch/x86/mm/highmem_32.c:52, [2.6.24-rc4-git5: Reported regressions from 2.6.23]
Date: Sun, 9 Dec 2007 09:50:30 +0100 [thread overview]
Message-ID: <20071209085030.GA14264@elte.hu> (raw)
In-Reply-To: <84144f020712090020o5bdeb54fqaa9e6578bd066f29@mail.gmail.com>
* Pekka Enberg <penberg@cs.helsinki.fi> wrote:
> Hi Ingo,
>
> On Dec 8, 2007 10:29 PM, Ingo Molnar <mingo@elte.hu> wrote:
> > so it has a "free list", which is clearly per cpu. Hang on! Isnt that
> > actually a per CPU queue? Which SLUB has not, we are told? The "U" in
> > SLUB. How on earth can an allocator in 2007 claim to have no queuing
> > (which is in essence caching)? Am i on crack with this? Did i miss
> > something really obvious?
>
> I think you did. The difference is explained in Christoph's
> announcement:
>
> "A particular concern was the complex management of the numerous
> object queues in SLAB. SLUB has no such queues. Instead we dedicate a
> slab for each allocating CPU and use objects from a slab directly
> instead of queueing them up."
>
> Which, I think, is where SLUB gets its name from (the "unqueued"
> part).
yes, i understand the initial announcement (and the Kconfig entry still
says the same), but that is not matched up by the reality i see in the
actual code - SLUB clearly uses a queue/list of objects (as cited in my
previous mail), for obvious performance reasons.
unless i'm missing something obvious (and i easily might), i see SLUB as
SLAB reimplemented with a different queueing model. Not "without
queueing".
> Now, while SLAB code is "pleasant and straightforward code" (thanks,
> btw) for UMA, it's really hairy for NUMA plus the "alien caches" eat
> tons of memory (which is why Christoph wrote SLUB in the first place,
> the current code in SLAB is mostly unfixable due to its *queuing*
> nature).
i'm curious about the real facts behind this "alien cache problem". I
heard about it and asked around and was told that there's some sort of
bad quadratic behavior of memory consumption on NUMA - but i cannot
actually see that in the code.
The alien caches feature of SLAB i see as a spread out clustered
index/cache of objects on other nodes. It's not increasing the average
per object memory consumption per se! The number of alien caches
increases with increasing number of nodes, but _of course_, as memory
size increases too so there's more stuff and a larger expected spreadout
of memory to keep track of. ("Fixing" that would be like reintroducing a
single runqueue for the scheduler, based on the argument that it's an
O(1) number of runqueues against O(N) number of runqueues - which would
be complete nonsense.)
so i see SLAB alien caches as an automatic self-partitioning mechanism
... which has complexities but which also has _obvious_ performance
benefits. Yes, it has some disadvantages like all caching schemes do -
there's more cached memory tied up in the allocator at any given moment
- but arguing against that would be like arguing against a 2MB L2 cache
purely on the basis that a 1MB L2 cache is smaller and hence more
space-efficient. Caches are there to cache stuff, and more caches ...
use more memory. It's all a question of proportion and tuning, but the
_design_ should be based on having as thorough caching as possible.
Ingo
next prev parent reply other threads:[~2007-12-09 8:51 UTC|newest]
Thread overview: 94+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-12-08 2:40 2.6.24-rc4-git5: Reported regressions from 2.6.23 Rafael J. Wysocki
2007-12-08 6:53 ` Fabio Comolli
2007-12-08 8:28 ` Ingo Molnar
2007-12-08 9:23 ` Andrew Morton
2007-12-08 22:11 ` Rafael J. Wysocki
2007-12-08 9:29 ` Andrew Morton
2007-12-08 22:17 ` Rafael J. Wysocki
2007-12-08 9:30 ` tipc_init(), WARNING: at arch/x86/mm/highmem_32.c:52, [2.6.24-rc4-git5: Reported regressions from 2.6.23] Ingo Molnar
2007-12-08 10:11 ` Andrew Morton
2007-12-08 16:37 ` Matt Mackall
2007-12-08 17:47 ` Linus Torvalds
2007-12-08 17:54 ` Linus Torvalds
2007-12-08 18:09 ` Andrew Morton
2007-12-08 18:37 ` Linus Torvalds
2007-12-08 19:52 ` Ingo Molnar
2007-12-08 20:29 ` Ingo Molnar
2007-12-09 8:20 ` Pekka Enberg
2007-12-09 8:50 ` Ingo Molnar [this message]
2007-12-09 9:18 ` Pekka Enberg
2007-12-09 11:51 ` Ingo Molnar
2007-12-09 12:34 ` Ingo Molnar
2007-12-13 22:07 ` Christoph Lameter
2007-12-09 15:59 ` Arjan van de Ven
2007-12-11 6:27 ` Dave Jones
2007-12-11 8:52 ` Ingo Molnar
2007-12-11 19:03 ` Peter Zijlstra
2007-12-14 4:07 ` Christoph Lameter
2007-12-14 7:16 ` Eric Dumazet
2007-12-14 12:49 ` Ingo Molnar
2007-12-17 19:54 ` Christoph Lameter
2007-12-09 7:58 ` Ingo Molnar
2007-12-09 14:17 ` Rafael J. Wysocki
2007-12-08 18:33 ` Matt Mackall
2007-12-08 19:00 ` Matt Mackall
2007-12-09 8:33 ` Pekka Enberg
2007-12-13 22:03 ` Christoph Lameter
2007-12-08 9:36 ` 2.6.24-rc4-git5: Reported regressions from 2.6.23 Andrew Morton
2007-12-08 10:12 ` Andreas Mohr
2007-12-08 10:20 ` Andrew Morton
2007-12-08 10:28 ` Matthew Garrett
2007-12-08 10:55 ` Andreas Mohr
2007-12-09 15:46 ` Tejun Heo
2007-12-09 19:59 ` Andreas Mohr
2007-12-09 6:52 ` Tejun Heo
2007-12-09 14:20 ` Rafael J. Wysocki
2007-12-09 15:11 ` Tejun Heo
2007-12-08 9:42 ` Andrew Morton
2007-12-08 18:57 ` Roland Dreier
2007-12-08 19:40 ` Theodore Tso
2007-12-08 19:55 ` Ingo Molnar
2007-12-08 22:30 ` Rafael J. Wysocki
2007-12-09 2:15 ` Theodore Tso
2007-12-13 10:49 ` Takashi Iwai
2007-12-20 15:42 ` Takashi Iwai
2007-12-08 9:46 ` Andrew Morton
2007-12-08 15:49 ` Alan Stern
2007-12-08 9:52 ` Andrew Morton
2007-12-09 7:00 ` Tejun Heo
2007-12-09 13:42 ` Alan Cox
2007-12-09 15:09 ` Tejun Heo
2007-12-09 15:25 ` Alan Cox
2007-12-09 15:39 ` Tejun Heo
2007-12-09 18:36 ` Linus Torvalds
2007-12-09 21:54 ` Alan Cox
2007-12-09 18:41 ` Linus Torvalds
2007-12-09 22:01 ` Alan Cox
2007-12-09 22:51 ` Ray Lee
2007-12-10 1:57 ` Linus Torvalds
2007-12-10 3:28 ` Alan Cox
2007-12-10 3:38 ` Alan Cox
2007-12-10 15:38 ` Linus Torvalds
2007-12-10 8:21 ` Ingo Molnar
2007-12-10 8:27 ` Tejun Heo
2007-12-10 8:41 ` Ingo Molnar
2007-12-08 10:44 ` Richard Purdie
2007-12-08 22:32 ` Rafael J. Wysocki
2007-12-09 11:54 ` Andrew Morton
2007-12-09 12:05 ` Ingo Molnar
2007-12-09 14:24 ` Rafael J. Wysocki
2007-12-10 20:42 ` Ingo Molnar
2007-12-10 20:57 ` Guillaume Chazarain
2007-12-10 20:59 ` Andrew Morton
2007-12-10 22:45 ` Ingo Molnar
2007-12-10 23:04 ` Ingo Molnar
2007-12-10 23:34 ` Stefano Brivio
2007-12-10 23:53 ` Guillaume Chazarain
2007-12-11 8:48 ` Ingo Molnar
2007-12-10 23:56 ` Arjan van de Ven
2007-12-11 0:01 ` Guillaume Chazarain
2007-12-11 1:06 ` Arjan van de Ven
2007-12-11 8:43 ` Ingo Molnar
2007-12-11 9:01 ` Ingo Molnar
2007-12-11 21:10 ` Stefano Brivio
2007-12-19 0:58 ` Stefano Brivio
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=20071209085030.GA14264@elte.hu \
--to=mingo@elte.hu \
--cc=akpm@linux-foundation.org \
--cc=clameter@sgi.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mpm@selenic.com \
--cc=penberg@cs.helsinki.fi \
--cc=rjw@sisk.pl \
--cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox