Re: [PATCH] SLUB The unqueued slab allocator V3
- From: David Miller <davem@xxxxxxxxxxxxx>
- Date: Wed, 28 Feb 2007 14:00:22 -0800 (PST)
From: Christoph Lameter <clameter@xxxxxxxxxxxx>
Date: Wed, 28 Feb 2007 11:20:44 -0800 (PST)
V2->V3
- Debugging and diagnostic support. This is runtime enabled and not compile
time enabled. Runtime debugging can be controlled via kernel boot options
on an individual slab cache basis or globally.
- Slab Trace support (For individual slab caches).
- Resiliency support: If basic sanity checks are enabled (via F f.e.)
(boot option) then SLUB will do the best to perform diagnostics and
then continue (i.e. mark corrupted objects as used).
- Fix up numerous issues including clash of SLUBs use of page
flags with i386 arch use for pmd and pgds (which are managed
as slab caches, sigh).
- Dynamic per CPU array sizing.
- Explain SLUB slabcache flags
V3 doesn't boot successfully on sparc64, sorry I don't have the
ability to track this down at the moment since it resets the
machine right as the video device is initialized and after diffing
V2 to V3 there is way too much stuff changing for me to try and
"bisect" between V2 to V3 to find the guilty sub-change.
Maybe if you managed your individual changes in GIT or similar
this could be debugged very quickly. :-)
Meanwhile I noticed that your alignment algorithm is different
than SLAB's. And I think this is important for the page table
SLABs that some platforms use.
No matter what flags are specified, SLAB gives at least the
passed in alignment specified in kmem_cache_create(). That
logic in slab is here:
/* 3) caller mandated alignment */
if (ralign < align) {
ralign = align;
}
Whereas SLUB uses the CPU cacheline size when the MUSTALIGN
flag is set. Architectures do things like:
pgtable_cache = kmem_cache_create("pgtable_cache",
PAGE_SIZE, PAGE_SIZE,
SLAB_HWCACHE_ALIGN |
SLAB_MUST_HWCACHE_ALIGN,
zero_ctor,
NULL);
to get a PAGE_SIZE aligned slab, SLUB doesn't give the same
behavior SLAB does in this case.
Arguably SLAB_HWCACHE_ALIGN and SLAB_MUST_HWCACHE_ALIGN should
not be set here, but SLUBs change in semantics in this area
could cause similar grief in other areas, an audit is probably
in order.
The above example was from sparc64, but x86 does the same thing
as probably do other platforms which use SLAB for pagetables.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
- Follow-Ups:
- Re: [PATCH] SLUB The unqueued slab allocator V3
- From: David Miller
- Re: [PATCH] SLUB The unqueued slab allocator V3
- References:
- [PATCH] SLUB The unqueued slab allocator V3
- From: Christoph Lameter
- [PATCH] SLUB The unqueued slab allocator V3
- Prev by Date: Re: [Bugme-new] [Bug 8100] New: dynticks makes ksoftirqd1 use unreasonable amount of cpu time
- Next by Date: Re: 2.6.21-rc1: known regressions (v2) (part 2)
- Previous by thread: [PATCH] SLUB The unqueued slab allocator V3
- Next by thread: Re: [PATCH] SLUB The unqueued slab allocator V3
- Index(es):
Relevant Pages
- Re: tipc_init(), WARNING: at arch/x86/mm/highmem_32.c:52, [2.6.24-rc4-git5: Reported regress
... It looks like SLUB will do a memclearfor the area twice for the slow case. ...
SLUB was done because of a series of problem with the basic concepts of SLAB that treaten it usability
in the future. ... SLAB requires a pass through all slab caches every 2 seconds to ...
I remember network interrupts were taken by CPU 1, so most allocations were ... (Linux-Kernel) - Re: tipc_init(), WARNING: at arch/x86/mm/highmem_32.c:52, [2.6.24-rc4-git5: Reported regress
... SLUB can be more than 10 times slower on hackbench. ... have you tried to tune
SLAB in the above benchmark? ... the moment you start capturing more memory in SLUB's per
cpu queues ... Use of SLAB DMA memory are exceedingly rare. ... (Linux-Kernel) - [patch 00/10] SLUB: SMP regression tests on Dual Xeon E5345 (8p) and new performance patches
... SLAB and SLUB are fundamentally different architectures. ... SLUB has
a lock in each slab allowing fine grained locking. ... Allocations and frees can then occur
from the CPU slab without taking ... (Linux-Kernel) - Re: tipc_init(), WARNING: at arch/x86/mm/highmem_32.c:52, [2.6.24-rc4-git5: Reported regress
... It looks like SLUB will do a memclearfor the ... SLAB that treaten it
usability in the future. ... Single threaded allocation speed is up to double that of SLAB
... SLAB requires a pass through all slab caches every 2 seconds to ... (Linux-Kernel) - Re: tipc_init(), WARNING: at arch/x86/mm/highmem_32.c:52, [2.6.24-rc4-git5: Reported regress
... If you guarantee that all the regression of SLAB vs. SLUB are ... which
is of little help if it regresses on other workloads. ... alien caches along cpusets
and demand-allocate them. ... (Linux-Kernel)