From: Nick Piggin <npiggin@suse.de> To: Pekka Enberg <penberg@cs.helsinki.fi> Cc: Christoph Lameter <cl@linux-foundation.org>, Christoph Lameter <cl@linux.com>, linux-mm@kvack.org, LKML <linux-kernel@vger.kernel.org>, Andrew Morton <akpm@linux-foundation.org>, Linus Torvalds <torvalds@linux-foundation.org>, David Rientjes <rientjes@google.com>, Zhang Yanmin <yanmin_zhang@linux.intel.com>, Matthew Wilcox <willy@linux.intel.com>, Matt Mackall <mpm@selenic.com>, Mel Gorman <mel@csn.ul.ie> Subject: Re: [RFC V2 SLEB 00/14] The Enhanced(hopefully) Slab Allocator Date: Tue, 25 May 2010 19:34:10 +1000 [thread overview] Message-ID: <20100525093410.GH5087@laptop> (raw) In-Reply-To: <AANLkTilJBY0sinB365lIZFUaMgMCZ1xyhMdXRTJTVDSV@mail.gmail.com> On Tue, May 25, 2010 at 12:19:09PM +0300, Pekka Enberg wrote: > Hi Nick, > > On Tue, May 25, 2010 at 11:16 AM, Nick Piggin <npiggin@suse.de> wrote: > > I don't think SLUB ever proved itself very well. The selling points > > were some untestable handwaving about how queueing is bad and jitter > > is bad, ignoring the fact that queues could be shortened and periodic > > reaping disabled at runtime with SLAB style of allocator. It also > > has relied heavily on higher order allocations which put great strain > > on hugepage allocations and page reclaim (witness the big slowdown > > in low memory conditions when tmpfs was using higher order allocations > > via SLUB). > > The main selling point for SLUB was NUMA. Has the situation changed? Well one problem with SLAB was really just those alien caches. AFAIK they were added by Christoph Lameter (maybe wrong), and I didn't ever actually see much justification for them in the changelog. noaliencache can be and is used on bigger machines, and SLES and RHEL kernels are using SLAB on production NUMA systems up to thousands of CPU Altixes, and have been looking at working on SGI's UV, and hundreds of cores POWER7 etc. I have not seen NUMA benchmarks showing SLUB is significantly better. I haven't done much testing myself, mind you. But from indications, we could probably quite easily drop the alien caches setup and do like a simpler single remote freeing queue per CPU or something like that. > Reliance on higher order allocations isn't that relevant if we're > anyway discussing ways to change allocation strategy. Then it's just going through more churn and adding untested code to get where SLAB already is (top performance without higher order allocations). So it is very relevant if we're considering how to get to a single allocator. > On Tue, May 25, 2010 at 11:16 AM, Nick Piggin <npiggin@suse.de> wrote: > > SLUB has not been able to displace SLAB for a long timedue to > > performance and higher order allocation problems. > > > > I think "clean code" is very important, but by far the hardest thing to > > get right by far is the actual allocation and freeing strategies. So > > it's crazy to base such a choice on code cleanliness. If that's the > > deciding factor, then I can provide a patch to modernise SLAB and then > > we can remove SLUB and start incremental improvements from there. > > I'm more than happy to take in patches to clean up SLAB but I think > you're underestimating the required effort. What SLUB has going for > it: > > - No NUMA alien caches > - No special lockdep handling required > - Debugging support is better > - Cpuset interractions are simpler > - Memory hotplug is more mature All this I don't think is much problem. It was only a problem because we put in SLUB and so half these new features were added to it and people weren't adding them to SLAB. > - Much more contributors to SLUB than to SLAB In large part because it is less mature. But also because it seems to be seen as the allocator of the future. Problem is that SLUB was never able to prove why it should be merged. The code cleanliness issue is really trivial in comparison to how much head scratching and work goes into analysing the performance. It *really* is not required to completely replace a whole subsystem like this to make progress. Even if we make relatively large changes, everyone gets to use and test them, and it's so easy to bisect and work out how changes interact and change behaviour. Compare that with the problems we have when someone says that SLUB has a performance regression against SLAB. > I was one of the people cleaning up SLAB when SLUB was merged and > based on that experience I'm strongly in favor of SLUB as a base. I think we should: modernise SLAB code, add missing debug features, possibly turn off alien caches by default, chuck out SLUB, and then require that future changes have some reasonable bar set to justify them. I would not be at all against adding changes that transform SLAB to SLUB or SLEB or SLQB. That's how it really should be done in the first place.
WARNING: multiple messages have this Message-ID (diff)
From: Nick Piggin <npiggin@suse.de> To: Pekka Enberg <penberg@cs.helsinki.fi> Cc: Christoph Lameter <cl@linux-foundation.org>, Christoph Lameter <cl@linux.com>, linux-mm@kvack.org, LKML <linux-kernel@vger.kernel.org>, Andrew Morton <akpm@linux-foundation.org>, Linus Torvalds <torvalds@linux-foundation.org>, David Rientjes <rientjes@google.com>, Zhang Yanmin <yanmin_zhang@linux.intel.com>, Matthew Wilcox <willy@linux.intel.com>, Matt Mackall <mpm@selenic.com>, Mel Gorman <mel@csn.ul.ie> Subject: Re: [RFC V2 SLEB 00/14] The Enhanced(hopefully) Slab Allocator Date: Tue, 25 May 2010 19:34:10 +1000 [thread overview] Message-ID: <20100525093410.GH5087@laptop> (raw) In-Reply-To: <AANLkTilJBY0sinB365lIZFUaMgMCZ1xyhMdXRTJTVDSV@mail.gmail.com> On Tue, May 25, 2010 at 12:19:09PM +0300, Pekka Enberg wrote: > Hi Nick, > > On Tue, May 25, 2010 at 11:16 AM, Nick Piggin <npiggin@suse.de> wrote: > > I don't think SLUB ever proved itself very well. The selling points > > were some untestable handwaving about how queueing is bad and jitter > > is bad, ignoring the fact that queues could be shortened and periodic > > reaping disabled at runtime with SLAB style of allocator. It also > > has relied heavily on higher order allocations which put great strain > > on hugepage allocations and page reclaim (witness the big slowdown > > in low memory conditions when tmpfs was using higher order allocations > > via SLUB). > > The main selling point for SLUB was NUMA. Has the situation changed? Well one problem with SLAB was really just those alien caches. AFAIK they were added by Christoph Lameter (maybe wrong), and I didn't ever actually see much justification for them in the changelog. noaliencache can be and is used on bigger machines, and SLES and RHEL kernels are using SLAB on production NUMA systems up to thousands of CPU Altixes, and have been looking at working on SGI's UV, and hundreds of cores POWER7 etc. I have not seen NUMA benchmarks showing SLUB is significantly better. I haven't done much testing myself, mind you. But from indications, we could probably quite easily drop the alien caches setup and do like a simpler single remote freeing queue per CPU or something like that. > Reliance on higher order allocations isn't that relevant if we're > anyway discussing ways to change allocation strategy. Then it's just going through more churn and adding untested code to get where SLAB already is (top performance without higher order allocations). So it is very relevant if we're considering how to get to a single allocator. > On Tue, May 25, 2010 at 11:16 AM, Nick Piggin <npiggin@suse.de> wrote: > > SLUB has not been able to displace SLAB for a long timedue to > > performance and higher order allocation problems. > > > > I think "clean code" is very important, but by far the hardest thing to > > get right by far is the actual allocation and freeing strategies. So > > it's crazy to base such a choice on code cleanliness. If that's the > > deciding factor, then I can provide a patch to modernise SLAB and then > > we can remove SLUB and start incremental improvements from there. > > I'm more than happy to take in patches to clean up SLAB but I think > you're underestimating the required effort. What SLUB has going for > it: > > - No NUMA alien caches > - No special lockdep handling required > - Debugging support is better > - Cpuset interractions are simpler > - Memory hotplug is more mature All this I don't think is much problem. It was only a problem because we put in SLUB and so half these new features were added to it and people weren't adding them to SLAB. > - Much more contributors to SLUB than to SLAB In large part because it is less mature. But also because it seems to be seen as the allocator of the future. Problem is that SLUB was never able to prove why it should be merged. The code cleanliness issue is really trivial in comparison to how much head scratching and work goes into analysing the performance. It *really* is not required to completely replace a whole subsystem like this to make progress. Even if we make relatively large changes, everyone gets to use and test them, and it's so easy to bisect and work out how changes interact and change behaviour. Compare that with the problems we have when someone says that SLUB has a performance regression against SLAB. > I was one of the people cleaning up SLAB when SLUB was merged and > based on that experience I'm strongly in favor of SLUB as a base. I think we should: modernise SLAB code, add missing debug features, possibly turn off alien caches by default, chuck out SLUB, and then require that future changes have some reasonable bar set to justify them. I would not be at all against adding changes that transform SLAB to SLUB or SLEB or SLQB. That's how it really should be done in the first place. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2010-05-25 9:34 UTC|newest] Thread overview: 89+ messages / expand[flat|nested] mbox.gz Atom feed top 2010-05-21 21:14 [RFC V2 SLEB 00/14] The Enhanced(hopefully) Slab Allocator Christoph Lameter 2010-05-21 21:14 ` [RFC V2 SLEB 01/14] slab: Introduce a constant for a unspecified node Christoph Lameter 2010-06-07 21:44 ` David Rientjes 2010-06-07 22:30 ` Christoph Lameter 2010-06-08 5:41 ` Pekka Enberg 2010-06-08 6:20 ` David Rientjes 2010-06-08 6:34 ` Pekka Enberg 2010-06-08 23:35 ` David Rientjes 2010-06-09 5:55 ` Pekka Enberg 2010-06-09 5:55 ` Pekka Enberg 2010-06-09 6:20 ` David Rientjes 2010-06-09 6:20 ` David Rientjes 2010-05-21 21:14 ` [RFC V2 SLEB 02/14] SLUB: Constants need UL Christoph Lameter 2010-05-21 21:14 ` [RFC V2 SLEB 03/14] SLUB: Use kmem_cache flags to detect if Slab is in debugging mode Christoph Lameter 2010-06-08 3:57 ` David Rientjes 2010-05-21 21:14 ` [RFC V2 SLEB 04/14] SLUB: discard_slab_unlock Christoph Lameter 2010-05-21 21:14 ` [RFC V2 SLEB 05/14] SLUB: is_kmalloc_cache Christoph Lameter 2010-06-08 8:54 ` David Rientjes 2010-05-21 21:14 ` [RFC V2 SLEB 06/14] SLUB: Get rid of the kmalloc_node slab Christoph Lameter 2010-06-09 6:14 ` David Rientjes 2010-06-09 16:14 ` Christoph Lameter 2010-06-09 16:26 ` Pekka Enberg 2010-06-10 6:07 ` Pekka Enberg 2010-05-21 21:14 ` [RFC V2 SLEB 07/14] SLEB: The Enhanced Slab Allocator Christoph Lameter 2010-05-21 21:15 ` [RFC V2 SLEB 08/14] SLEB: Resize cpu queue Christoph Lameter 2010-05-21 21:15 ` [RFC V2 SLEB 09/14] SLED: Get rid of useless function Christoph Lameter 2010-05-21 21:15 ` [RFC V2 SLEB 10/14] SLEB: Remove MAX_OBJS limitation Christoph Lameter 2010-05-21 21:15 ` [RFC V2 SLEB 11/14] SLEB: Add per node cache (with a fixed size for now) Christoph Lameter 2010-05-21 21:15 ` [RFC V2 SLEB 12/14] SLEB: Make the size of the shared cache configurable Christoph Lameter 2010-05-21 21:15 ` [RFC V2 SLEB 13/14] SLEB: Enhanced NUMA support Christoph Lameter 2010-05-21 21:15 ` [RFC V2 SLEB 14/14] SLEB: Allocate off node objects from remote shared caches Christoph Lameter 2010-05-22 8:37 ` [RFC V2 SLEB 00/14] The Enhanced(hopefully) Slab Allocator Pekka Enberg 2010-05-24 7:03 ` Nick Piggin 2010-05-24 15:06 ` Christoph Lameter 2010-05-25 2:06 ` Nick Piggin 2010-05-25 6:55 ` Pekka Enberg 2010-05-25 7:07 ` Nick Piggin 2010-05-25 8:03 ` Pekka Enberg 2010-05-25 8:03 ` Pekka Enberg 2010-05-25 8:16 ` Nick Piggin 2010-05-25 8:16 ` Nick Piggin 2010-05-25 9:19 ` Pekka Enberg 2010-05-25 9:19 ` Pekka Enberg 2010-05-25 9:34 ` Nick Piggin [this message] 2010-05-25 9:34 ` Nick Piggin 2010-05-25 9:53 ` Pekka Enberg 2010-05-25 9:53 ` Pekka Enberg 2010-05-25 10:19 ` Nick Piggin 2010-05-25 10:19 ` Nick Piggin 2010-05-25 10:45 ` Pekka Enberg 2010-05-25 10:45 ` Pekka Enberg 2010-05-25 11:06 ` Nick Piggin 2010-05-25 11:06 ` Nick Piggin 2010-05-25 15:13 ` Linus Torvalds 2010-05-25 15:13 ` Linus Torvalds 2010-05-25 15:43 ` Nick Piggin 2010-05-25 15:43 ` Nick Piggin 2010-05-25 17:02 ` Pekka Enberg 2010-05-25 17:02 ` Pekka Enberg 2010-05-25 17:19 ` Nick Piggin 2010-05-25 17:19 ` Nick Piggin 2010-05-25 17:35 ` Pekka Enberg 2010-05-25 17:35 ` Pekka Enberg 2010-05-25 17:40 ` Nick Piggin 2010-05-25 17:40 ` Nick Piggin 2010-05-25 10:07 ` David Rientjes 2010-05-25 10:07 ` David Rientjes 2010-05-25 10:02 ` David Rientjes 2010-05-25 10:02 ` David Rientjes 2010-05-25 10:47 ` Pekka Enberg 2010-05-25 10:47 ` Pekka Enberg 2010-05-25 19:57 ` David Rientjes 2010-05-25 19:57 ` David Rientjes 2010-05-25 14:13 ` Christoph Lameter 2010-05-25 14:34 ` Nick Piggin 2010-05-25 14:43 ` Nick Piggin 2010-05-25 14:48 ` Christoph Lameter 2010-05-25 15:11 ` Nick Piggin 2010-05-25 15:28 ` Christoph Lameter 2010-05-25 15:37 ` Nick Piggin 2010-05-27 14:24 ` Christoph Lameter 2010-05-27 14:37 ` Nick Piggin 2010-05-27 15:52 ` Christoph Lameter 2010-05-27 16:07 ` Nick Piggin 2010-05-27 16:57 ` Christoph Lameter 2010-05-28 8:39 ` Nick Piggin 2010-05-25 14:40 ` Nick Piggin 2010-05-25 14:48 ` Christoph Lameter 2010-05-25 15:12 ` Nick Piggin
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=20100525093410.GH5087@laptop \ --to=npiggin@suse.de \ --cc=akpm@linux-foundation.org \ --cc=cl@linux-foundation.org \ --cc=cl@linux.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=mel@csn.ul.ie \ --cc=mpm@selenic.com \ --cc=penberg@cs.helsinki.fi \ --cc=rientjes@google.com \ --cc=torvalds@linux-foundation.org \ --cc=willy@linux.intel.com \ --cc=yanmin_zhang@linux.intel.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: linkBe 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.