From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jesper Dangaard Brouer Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) Date: Mon, 7 Sep 2015 11:30:26 +0200 Message-ID: <20150907113026.5bb28ca3@redhat.com> References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> <20150904032607.GX1933@devil.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: brouer@redhat.com, Dave Chinner , Mike Snitzer , Christoph Lameter , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm , "netdev@vger.kernel.org" To: Linus Torvalds Return-path: In-Reply-To: Sender: owner-linux-mm@kvack.org List-Id: netdev.vger.kernel.org On Thu, 3 Sep 2015 20:51:09 -0700 Linus Torvalds wrote: > On Thu, Sep 3, 2015 at 8:26 PM, Dave Chinner wrote: > > > > The double standard is the problem here. No notification, proof, > > discussion or review was needed to turn on slab merging for > > everyone, but you're setting a very high bar to jump if anyone wants > > to turn it off in their code. > > Ehh. You realize that almost the only load that is actually seriously > allocator-limited is networking? > > And slub was beating slab on that? And slub has been doing the merging > since day one. Slab was just changed to try to keep up with the > winning strategy. Sorry, I have to correct you on this. The slub allocator is not as fast as you might think. The slab allocator is actually faster for networking. IP-forwarding, single CPU, single flow UDP (highly tuned): * Allocator slub: 2043575 pps * Allocator slab: 2088295 pps Difference slab faster than slub: * +44720 pps and -10.48ns The slub allocator have a faster "fastpath", if your workload is fast-reusing within the same per-cpu page-slab, but once the workload increases you hit the slowpath, and then slab catches up. Slub looks great in micro-benchmarking. As you can see in patchset: [PATCH 0/3] Network stack, first user of SLAB/kmem_cache bulk free API. http://thread.gmane.org/gmane.linux.kernel.mm/137469/focus=376625 I'm working on speeding up slub to the level of slab. And it seems like I have succeeded with half-a-nanosec 2090522 pps (+2227 pps or 0.51 ns). And with "slab_nomerge" I get even high performance: * slub: bulk-free and slab_nomerge: 2121824 pps * Diff to slub: +78249 and -18.05ns -- Best regards, Jesper Dangaard Brouer MSc.CS, Sr. Network Kernel Developer at Red Hat Author of http://www.iptv-analyzer.org LinkedIn: http://www.linkedin.com/in/brouer -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 From: Linus Torvalds Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) Date: Mon, 7 Sep 2015 13:22:13 -0700 Message-ID: References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> <20150904032607.GX1933@devil.localdomain> <20150907113026.5bb28ca3@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Cc: Dave Chinner , Mike Snitzer , Christoph Lameter , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm , "netdev@vger.kernel.org" To: Jesper Dangaard Brouer Return-path: Received: from mail-ig0-f170.google.com ([209.85.213.170]:37835 "EHLO mail-ig0-f170.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751162AbbIGUWO (ORCPT ); Mon, 7 Sep 2015 16:22:14 -0400 Received: by igbni9 with SMTP id ni9so63363227igb.0 for ; Mon, 07 Sep 2015 13:22:13 -0700 (PDT) In-Reply-To: <20150907113026.5bb28ca3@redhat.com> Sender: netdev-owner@vger.kernel.org List-ID: On Mon, Sep 7, 2015 at 2:30 AM, Jesper Dangaard Brouer wrote: > > The slub allocator have a faster "fastpath", if your workload is > fast-reusing within the same per-cpu page-slab, but once the workload > increases you hit the slowpath, and then slab catches up. Slub looks > great in micro-benchmarking. > > And with "slab_nomerge" I get even high performance: I think those two are related. Not merging means that effectively the percpu caches end up being bigger (simply because there are more of them), and so it captures more of the fastpath cases. Obviously the percpu queue size is an easy tunable too, but there are real downsides to that too. I suspect your IP forwarding case isn't so different from some of the microbenchmarks, it just has more outstanding work.. And yes, the slow path (ie not hitting in the percpu cache) of SLUB could hopefully be optimizable too, although maybe the bulk patches are the way to go (and unrelated to this thread - at least part of your bulk patches actually got merged last Friday - they were part of Andrew's patch-bomb). Linus From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jesper Dangaard Brouer Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) Date: Mon, 7 Sep 2015 23:17:15 +0200 Message-ID: <20150907231715.0a375b40@redhat.com> References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> <20150904032607.GX1933@devil.localdomain> <20150907113026.5bb28ca3@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: Dave Chinner , Mike Snitzer , Christoph Lameter , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm , "netdev@vger.kernel.org" , brouer@redhat.com To: Linus Torvalds Return-path: In-Reply-To: Sender: owner-linux-mm@kvack.org List-Id: netdev.vger.kernel.org On Mon, 7 Sep 2015 13:22:13 -0700 Linus Torvalds wrote: > On Mon, Sep 7, 2015 at 2:30 AM, Jesper Dangaard Brouer > wrote: > > > > The slub allocator have a faster "fastpath", if your workload is > > fast-reusing within the same per-cpu page-slab, but once the workload > > increases you hit the slowpath, and then slab catches up. Slub looks > > great in micro-benchmarking. > > > > And with "slab_nomerge" I get even high performance: > > I think those two are related. > > Not merging means that effectively the percpu caches end up being > bigger (simply because there are more of them), and so it captures > more of the fastpath cases. Yes, that was also my theory. As manually tuning the percpu sizes gave me almost the same boost. > Obviously the percpu queue size is an easy tunable too, but there are > real downsides to that too. The easy fix is to introduce a subsystem specific percpu cache that is large enough for our use-case. That seems to be a trend. I'm hoping to come up with something smarter that every subsystem can benefit from. E.g some heuristic that can dynamic adjust SLUB according to the usage pattern. I can imagine something as simple as a counter for every slowpath call, that is only valid as long as the jiffies count matches (reset to zero, and store new jiffies cnt). (But I have not thought this through...) > I suspect your IP forwarding case isn't so > different from some of the microbenchmarks, it just has more > outstanding work.. Yes, I will admit that my testing is very close to micro benchmarking, and it is specifically designed to pressure the system to its limits[1]. Especially the minimum frame size is evil and unrealistic, but the real purpose is preparing the stack for increasing speeds like 100Gbit/s. > And yes, the slow path (ie not hitting in the percpu cache) of SLUB > could hopefully be optimizable too, although maybe the bulk patches > are the way to go (and unrelated to this thread - at least part of > your bulk patches actually got merged last Friday - they were part of > Andrew's patch-bomb). Cool. Yes, it is only part of the bulk patches. The real performance boosters are not in yet (but I need to make them work correctly with memory debugging enabled before they can get merged). At least the main API is in, which allows me to implement use-case easier in other subsystems :-) [1] http://netoptimizer.blogspot.dk/2014/09/packet-per-sec-measurements-for.html -- Best regards, Jesper Dangaard Brouer MSc.CS, Sr. Network Kernel Developer at Red Hat Author of http://www.iptv-analyzer.org LinkedIn: http://www.linkedin.com/in/brouer -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io0-f178.google.com (mail-io0-f178.google.com [209.85.223.178]) by kanga.kvack.org (Postfix) with ESMTP id EA2FD6B0254 for ; Wed, 2 Sep 2015 19:13:45 -0400 (EDT) Received: by ioiz6 with SMTP id z6so38646760ioi.2 for ; Wed, 02 Sep 2015 16:13:45 -0700 (PDT) Received: from mail-io0-x232.google.com (mail-io0-x232.google.com. [2607:f8b0:4001:c06::232]) by mx.google.com with ESMTPS id ri1si3619370igc.93.2015.09.02.16.13.45 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 02 Sep 2015 16:13:45 -0700 (PDT) Received: by iofb144 with SMTP id b144so38889239iof.1 for ; Wed, 02 Sep 2015 16:13:45 -0700 (PDT) MIME-Version: 1.0 Date: Wed, 2 Sep 2015 16:13:44 -0700 Message-ID: Subject: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) From: Linus Torvalds Content-Type: text/plain; charset=UTF-8 Sender: owner-linux-mm@kvack.org List-ID: To: Mike Snitzer , Dave Chinner , Christoph Lameter , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim Cc: "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm On Wed, Sep 2, 2015 at 10:39 AM, Mike Snitzer wrote: > > - last but not least: add SLAB_NO_MERGE flag to mm/slab_common and > disable slab merging for all of DM's slabs (XFS will also use > SLAB_NO_MERGE once merged). So I'm not at all convinced this is the right thing to do. In fact, I'm pretty convinced it shouldn't be done this way. Since those commits were at the top of your tree, I just didn't pull them, but took the rest.. You are basically making this one-sided decision based on your notion of convenience, and just forcing that thing unconditionally on people. Your rationale seems _totally_ bogus: you say that it's to be able to observe the sizes of the dm slabs without using slab debugging. First off, you don't have to enable slab debugging. You can just disable slab merging. It's called "slab_nomerge". It does exactly what you would think it does. And what is it that makes dm slabs such a special little princess? What makes you think that the fact that _you_ want to look at slab statistics means that everybody else suddenly must have separate slabs for dm, and dm only? Or xfs? The other "rationale" was that not merging slabs limits cross-subsystem memory corruption. Again, what the _hell_ is special about device mapper that dm - and only dm - would make this a special thing? That is just pure and utter garbage. Again, we already have that "slab_nomerge" option, exactly so that when odd slab corruption issues happen (they are rare, but they do occasionally happen), you can try that to see if that pinpoints the problem more. And it is *not* limited to some random set of subsystems. Which makes it clearly superior to your broken approach, wouldn't you agree? The only possible true rationale for why dm is special is "because dm is such a buggy piece of sh*t that it's much more likely to have these slab corruption bugs than anything else, so I'm just protecting the rest of the system". Is that really your rationale? Somehow I doubt it. But if it is, you really should have said so. At least then it would make sense why this thing came in through the dm tree, and why dm is so special than it - and only it - would disable slab merging. So I'm not pulling things like this from the device mapper tree. There is just no excuse that I can see for something like SLAB_NO_MERGE to go through the dm tree in the first place, but that's doubly true when the rationale for these things were bogus and had nothing what-so-ever to do with dm. Things like this aren't supposed to come in through random irrelevant trees like this, and with no discussion (at least judging by the commits) with the maintainers of the other pieces of code. If you have issues with slab merging, then those should be discussed as such, not as some magical and bogus dm or xfs special case when they damn well aren't, and damn well will never be. Yes, I'm annoyed. This was not done well. I realize that everybody thinks that _their_ code is so special and exceptional that "obviously" they should be treated specially, but I don't see that that is the case at all in this case. If you want to argue that slab merging should be disabled by default, then that is an argument that I'm willing to believe might be valid ("the downsides are bigger than the upsides"). Or if you are able to explain why dm really _is_ special, that's an option too. But this kind of "random subsystems decide unilaterally to not follow the normal rules" is not acceptable. Not when the "arguments" for it have absolutely nothing in particular to do with that subsystem. Linus -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ig0-f179.google.com (mail-ig0-f179.google.com [209.85.213.179]) by kanga.kvack.org (Postfix) with ESMTP id 6AD166B0254 for ; Wed, 2 Sep 2015 20:48:17 -0400 (EDT) Received: by igcpb10 with SMTP id pb10so3053025igc.1 for ; Wed, 02 Sep 2015 17:48:17 -0700 (PDT) Received: from mail.linuxfoundation.org (mail.linuxfoundation.org. [140.211.169.12]) by mx.google.com with ESMTPS id e90si6283302ioj.33.2015.09.02.17.48.16 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 02 Sep 2015 17:48:16 -0700 (PDT) Date: Wed, 2 Sep 2015 17:48:15 -0700 From: Andrew Morton Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) Message-Id: <20150902174815.199d51a480a01e9a754367e3@linux-foundation.org> In-Reply-To: References: Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-linux-mm@kvack.org List-ID: To: Linus Torvalds Cc: Mike Snitzer , Dave Chinner , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm On Wed, 2 Sep 2015 16:13:44 -0700 Linus Torvalds wrote: > On Wed, Sep 2, 2015 at 10:39 AM, Mike Snitzer wrote: > > > > - last but not least: add SLAB_NO_MERGE flag to mm/slab_common and > > disable slab merging for all of DM's slabs (XFS will also use > > SLAB_NO_MERGE once merged). > > So I'm not at all convinced this is the right thing to do. In fact, > I'm pretty convinced it shouldn't be done this way. Since those > commits were at the top of your tree, I just didn't pull them, but > took the rest.. I don't have problems with the patch itself, really. It only affects callers who use SLAB_NO_MERGE and those developers can make their own decisions. It is a bit sad to de-optimise dm for all users for all time in order to make life a bit easier for dm's developers, but maybe that's a decent tradeoff. What I do have a problem with is that afaict the patch appeared on linux-mm for the first time just yesterday. Didn't cc slab developers, it isn't in linux-next, didn't cc linux-kernel or linux-mm or slab/mm developers on the pull request. Bad! I'd like the slab developers to have time to understand and review this change, please. Partly so they have a chance to provide feedback for the usual reasons, but also to help them understand the effect their design choice had on client subystems. -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io0-f177.google.com (mail-io0-f177.google.com [209.85.223.177]) by kanga.kvack.org (Postfix) with ESMTP id 07B8E6B0254 for ; Wed, 2 Sep 2015 20:51:19 -0400 (EDT) Received: by ioiz6 with SMTP id z6so40606060ioi.2 for ; Wed, 02 Sep 2015 17:51:18 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com. [209.132.183.28]) by mx.google.com with ESMTPS id j4si13444128pda.206.2015.09.02.17.51.18 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 02 Sep 2015 17:51:18 -0700 (PDT) Date: Wed, 2 Sep 2015 20:51:15 -0400 From: Mike Snitzer Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) Message-ID: <20150903005115.GA27804@redhat.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Sender: owner-linux-mm@kvack.org List-ID: To: Linus Torvalds Cc: Dave Chinner , Christoph Lameter , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm On Wed, Sep 02 2015 at 7:13pm -0400, Linus Torvalds wrote: > On Wed, Sep 2, 2015 at 10:39 AM, Mike Snitzer wrote: > > > > - last but not least: add SLAB_NO_MERGE flag to mm/slab_common and > > disable slab merging for all of DM's slabs (XFS will also use > > SLAB_NO_MERGE once merged). > > So I'm not at all convinced this is the right thing to do. In fact, > I'm pretty convinced it shouldn't be done this way. Since those > commits were at the top of your tree, I just didn't pull them, but > took the rest.. OK, thanks. > You are basically making this one-sided decision based on your notion > of convenience, and just forcing that thing unconditionally on people. The switch to slab merging was forced on everyone without proper notice. What I made possible with SLAB_NO_MERGE is for each subsystem to decide if they would prefer to not allow slab merging. > Your rationale seems _totally_ bogus: you say that it's to be able to > observe the sizes of the dm slabs without using slab debugging. > > First off, you don't have to enable slab debugging. You can just > disable slab merging. It's called "slab_nomerge". It does exactly > what you would think it does. I'm well aware of slab_nomerge. I called it out in my commit message. > And what is it that makes dm slabs such a special little princess? > What makes you think that the fact that _you_ want to look at slab > statistics means that everybody else suddenly must have separate slabs > for dm, and dm only? Or xfs? >>From where I sit it is much more useful to have separate slabs. Could be if a case was actually made for slab merging I'd change my view. But as of now these trump the stated benefits of slab merging: 1) useful slab usage stats 2) fault isolation from other subsystems > The other "rationale" was that not merging slabs limits > cross-subsystem memory corruption. Again, what the _hell_ is special > about device mapper that dm - and only dm - would make this a special > thing? That is just pure and utter garbage. Again, we already have > that "slab_nomerge" option, exactly so that when odd slab corruption > issues happen (they are rare, but they do occasionally happen), you > can try that to see if that pinpoints the problem more. And it is > *not* limited to some random set of subsystems. Which makes it clearly > superior to your broken approach, wouldn't you agree? I'm not interested in deciding such things for everyone. I added a flag that enables piecewise enablement of unshared slabs for subsystems that really don't want shared slabs. Aside from improved accounting, the point is to not allow other crap code (e.g. staging or whatever) to impact other subsystems via shared slabs. > The only possible true rationale for why dm is special is "because dm > is such a buggy piece of sh*t that it's much more likely to have these > slab corruption bugs than anything else, so I'm just protecting the > rest of the system". > > Is that really your rationale? Somehow I doubt it. But if it is, you > really should have said so. At least then it would make sense why this > thing came in through the dm tree, and why dm is so special than it - > and only it - would disable slab merging. The 3 lines that added SLAB_NO_MERGE were pretty damn clean. SLAB_NO_MERGE gives subsystems a choice they didn't have before and they frankly probably never knew they had to care about it because they didn't know slabs were being merged. I asked around enough to know I'm not an idiot for having missed the memo on slab merging. Lack of awareness aside, nobody ever _convincingly_ detailed why slab merging was pushed on everyone. Look at the header for commit 12220de ("mm/slab: support slab merge") -- now that is some seriously weak justification! I sought to get more insight on "why slab merging?" and all I found was this in Documentation/vm/slub.txt: " Slab merging ------------ If no debug options are specified then SLUB may merge similar slabs together in order to reduce overhead and increase cache hotness of objects. slabinfo -a displays which slabs were merged together." " I couldn't even find which package provides slabinfo to run slabinfo -a! And the hand-wavvy "reduce overhead and increase cache hotness of objects" frankly sucks. > So I'm not pulling things like this from the device mapper tree. There > is just no excuse that I can see for something like SLAB_NO_MERGE to > go through the dm tree in the first place, but that's doubly true when > the rationale for these things were bogus and had nothing what-so-ever > to do with dm. As DM maintainer I do have a choice about how the subsystem is architected. > Things like this aren't supposed to come in through random irrelevant > trees like this, and with no discussion (at least judging by the > commits) with the maintainers of the other pieces of code. DM is irrelevant now? Because I pissed you off? Or because you trully think that? This is the first and hopefully last time I get flamed by you. I shouldn't have pushed for this change so aggressively. The lack of feedback from mm people shouldn't have been taken by me as implied "we forced it on you a year ago, fuck you". But I'm genuinely _not_ appreciative of this change to shared slabs so I took action to restore what I hold to be the right way to design system software. > If you have issues with slab merging, then those should be discussed > as such, not as some magical and bogus dm or xfs special case when > they damn well aren't, and damn well will never be. > > Yes, I'm annoyed. This was not done well. I realize that everybody > thinks that _their_ code is so special and exceptional that > "obviously" they should be treated specially, but I don't see that > that is the case at all in this case. > > If you want to argue that slab merging should be disabled by default, > then that is an argument that I'm willing to believe might be valid > ("the downsides are bigger than the upsides"). Or if you are able to > explain why dm really _is_ special, that's an option too. But this > kind of "random subsystems decide unilaterally to not follow the > normal rules" is not acceptable. Not when the "arguments" for it have > absolutely nothing in particular to do with that subsystem. DM isn't special. Never intended it to come off like it is. I don't want slab merging but as a middle ground I made it so it is left to each subsystem to decide to use it or not. I clearly was the first to take issue with slab merging by calling it out with patches. In doing so Dave Chinner said he'd rather avoid using shared slabs in XFS. Pretty sure XFS isn't irrelvant yet. I'd wager there would be a flood of other subsystems opting to use SLAB_NO_MERGE. I can appreciate that as something the pro-slab-merge camp would like to avoid (the more that opt-out the more useless slab merging becomes). It is messed up that no _real_ justification was given for slab merging yet it was pushed on everyone. Thankfully it hasn't been unstable (which backs up your point) but I'd still love to understand how it is so beneficial. Is it a significant win? If so where? Or is it a microoptimization at the expense of both accounting and fault isolation? Mike -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pa0-f54.google.com (mail-pa0-f54.google.com [209.85.220.54]) by kanga.kvack.org (Postfix) with ESMTP id AF3276B0254 for ; Wed, 2 Sep 2015 20:53:35 -0400 (EDT) Received: by pacwi10 with SMTP id wi10so27769583pac.3 for ; Wed, 02 Sep 2015 17:53:35 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com. [209.132.183.28]) by mx.google.com with ESMTPS id e4si38443945pdc.222.2015.09.02.17.53.34 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 02 Sep 2015 17:53:35 -0700 (PDT) Date: Wed, 2 Sep 2015 20:53:33 -0400 From: Mike Snitzer Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) Message-ID: <20150903005332.GB27804@redhat.com> References: <20150902174815.199d51a480a01e9a754367e3@linux-foundation.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150902174815.199d51a480a01e9a754367e3@linux-foundation.org> Sender: owner-linux-mm@kvack.org List-ID: To: Andrew Morton Cc: Linus Torvalds , Dave Chinner , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm On Wed, Sep 02 2015 at 8:48pm -0400, Andrew Morton wrote: > On Wed, 2 Sep 2015 16:13:44 -0700 Linus Torvalds wrote: > > > On Wed, Sep 2, 2015 at 10:39 AM, Mike Snitzer wrote: > > > > > > - last but not least: add SLAB_NO_MERGE flag to mm/slab_common and > > > disable slab merging for all of DM's slabs (XFS will also use > > > SLAB_NO_MERGE once merged). > > > > So I'm not at all convinced this is the right thing to do. In fact, > > I'm pretty convinced it shouldn't be done this way. Since those > > commits were at the top of your tree, I just didn't pull them, but > > took the rest.. > > I don't have problems with the patch itself, really. It only affects > callers who use SLAB_NO_MERGE and those developers can make > their own decisions. > > It is a bit sad to de-optimise dm for all users for all time in order > to make life a bit easier for dm's developers, but maybe that's a > decent tradeoff. > > > What I do have a problem with is that afaict the patch appeared on > linux-mm for the first time just yesterday. Didn't cc slab developers, > it isn't in linux-next, didn't cc linux-kernel or linux-mm or slab/mm > developers on the pull request. Bad! Yeap, noted. Won't happen again. > I'd like the slab developers to have time to understand and review this > change, please. Partly so they have a chance to provide feedback for > the usual reasons, but also to help them understand the effect their > design choice had on client subystems. Sure, sorry to force the issue like I did. -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ig0-f178.google.com (mail-ig0-f178.google.com [209.85.213.178]) by kanga.kvack.org (Postfix) with ESMTP id BBD696B0254 for ; Wed, 2 Sep 2015 21:21:03 -0400 (EDT) Received: by igcrk20 with SMTP id rk20so38618034igc.1 for ; Wed, 02 Sep 2015 18:21:03 -0700 (PDT) Received: from mail-io0-x22f.google.com (mail-io0-x22f.google.com. [2607:f8b0:4001:c06::22f]) by mx.google.com with ESMTPS id vk4si3889147igb.97.2015.09.02.18.21.03 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 02 Sep 2015 18:21:03 -0700 (PDT) Received: by iofb144 with SMTP id b144so41477845iof.1 for ; Wed, 02 Sep 2015 18:21:03 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <20150903005115.GA27804@redhat.com> References: <20150903005115.GA27804@redhat.com> Date: Wed, 2 Sep 2015 18:21:02 -0700 Message-ID: Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) From: Linus Torvalds Content-Type: text/plain; charset=UTF-8 Sender: owner-linux-mm@kvack.org List-ID: To: Mike Snitzer Cc: Dave Chinner , Christoph Lameter , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm On Wed, Sep 2, 2015 at 5:51 PM, Mike Snitzer wrote: > > What I made possible with SLAB_NO_MERGE is for each subsystem to decide > if they would prefer to not allow slab merging. .. and why is that a choice that even makes sense at that level? Seriously. THAT is the fundamental issue here. There are absolutely zero reasons this is dm-specific, but it is equally true that there are absolutely zero reasons that it is xyzzy-specific, for any random value of 'xyzzy'. And THAT is why I'm fairly convinced that the whole approach is bogus and broken. And note that that bogosity is separate from how this was done. It's a broken approach, but it was also done wrong. Two totally separate issues, but together it sure is annoying. > From where I sit it is much more useful to have separate slabs. Could > be if a case was actually made for slab merging I'd change my view. But > as of now these trump the stated benefits of slab merging: > 1) useful slab usage stats > 2) fault isolation from other subsystems .. and again, absolutely NEITHER of those have anything to do with "subsystem X". Can you really not see how *illogical* it is to make this a subsystem choice? So explain to me why you made it so? > The 3 lines that added SLAB_NO_MERGE were pretty damn clean. No. It really seriously wasn't. The code may be simple, but it sure isn't "pretty damn clean", exactly because I think the whole concept is fundamentally illogical. See above. As I mentioned in my email: if your point is that "slab_nomerge" has the wrong default value, then that is a different discussion, and one that may well be valid. But the whole concept of "random slabs can mark themselves no-merge for no obvious reasons" is broken. That was my argument, and you don't seem to get it. And even if it turns out not to be broken (please explain), it still should have been discussed. > SLAB_NO_MERGE gives subsystems a choice they didn't have before and they > frankly probably never knew they had to care about it because they didn't > know slabs were being merged. I asked around enough to know I'm not an > idiot for having missed the memo on slab merging. Put another way: things have been merged for years, and you didn't even notice. Seriously. I'm not exaggerating about "for years". At least for slub, it's been that way since it was initially merged, back in 2007. Yeah, it may have taken a while for slub to then become one of the major allocators, but it's been the default in at least Fedora for years and years too, afaik, so it's not like slub is something odd and unusual. You seem to argue that "not being aware of it" means that it's surprising and should be disabled. But quite frankly, wouldn't you say that "it hasn't caused any obvious problems" is at _least_ as likely an explanation for you not being aware of it? Because clearly, that lack of statistics and the possible cross-subsystem corruption hasn't actually been a pressing concern in reality. But suddenly it became such a big issue that you just _had_ to fix it, right? After seven years it's suddenly *so* important that dm absolutely has to disable it. And it really had to be dm that did it for its caches, rather than just use "slab_nomerge". Despite there not being anything dm-specific about that choice. Now tell me, what was the rationale for this all again? Because really, I'm not seeing it. And I'm _particularly_ not seeing why it then had to be sneaked in like this. Linus -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pa0-f48.google.com (mail-pa0-f48.google.com [209.85.220.48]) by kanga.kvack.org (Postfix) with ESMTP id 56ABF6B0254 for ; Wed, 2 Sep 2015 22:31:29 -0400 (EDT) Received: by pacwi10 with SMTP id wi10so30217923pac.3 for ; Wed, 02 Sep 2015 19:31:29 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com. [209.132.183.28]) by mx.google.com with ESMTPS id x5si38771934pbt.100.2015.09.02.19.31.28 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 02 Sep 2015 19:31:28 -0700 (PDT) Date: Wed, 2 Sep 2015 22:31:25 -0400 From: Mike Snitzer Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) Message-ID: <20150903023125.GC27804@redhat.com> References: <20150903005115.GA27804@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Sender: owner-linux-mm@kvack.org List-ID: To: Linus Torvalds Cc: Heinz Mauelshagen , Andrew Morton , Viresh Kumar , Dave Chinner , Joe Thornber , Pekka Enberg , linux-mm , "dm-devel@redhat.com" , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , David Rientjes , Joonsoo Kim , Christoph Lameter , Alasdair G Kergon On Wed, Sep 02 2015 at 9:21pm -0400, Linus Torvalds wrote: > On Wed, Sep 2, 2015 at 5:51 PM, Mike Snitzer wrote: > > > > What I made possible with SLAB_NO_MERGE is for each subsystem to decide > > if they would prefer to not allow slab merging. > > .. and why is that a choice that even makes sense at that level? > > Seriously. > > THAT is the fundamental issue here. > > There are absolutely zero reasons this is dm-specific, but it is > equally true that there are absolutely zero reasons that it is > xyzzy-specific, for any random value of 'xyzzy'. > > And THAT is why I'm fairly convinced that the whole approach is bogus > and broken. Why do we even have slab creation flags? Andrew seemed much more reasonable about this. > And note that that bogosity is separate from how this was done. It's a > broken approach, but it was also done wrong. Two totally separate > issues, but together it sure is annoying. > > > From where I sit it is much more useful to have separate slabs. Could > > be if a case was actually made for slab merging I'd change my view. But > > as of now these trump the stated benefits of slab merging: > > 1) useful slab usage stats > > 2) fault isolation from other subsystems > > .. and again, absolutely NEITHER of those have anything to do with > "subsystem X". OK, I get that I'm unimportant. You can stop beating me over my irrelevant subsystem maintainer head now... But when longstanding isolation and functionality is removed in the name of microoptimizations its difficult to accept -- even if the realization occurs years after the fact. > Can you really not see how *illogical* it is to make this a subsystem choice? > > So explain to me why you made it so? > > > The 3 lines that added SLAB_NO_MERGE were pretty damn clean. > > No. It really seriously wasn't. > > The code may be simple, but it sure isn't "pretty damn clean", exactly > because I think the whole concept is fundamentally illogical. See > above. Yeah, your circular logic doesn't help me. You defined your argument in terms of unsubstantiated claims of me being illogical. What is illogical about wanting DM to: 1) have useful slab accounting 2) have fault isolation from other slab consumers 3) not impose 1+2 on all other subsystems ? I guess I'm just supposed to accept that slab merging is or isn't. There is no in-between (unless I create a slab with SLAB_DESTROY_BY_RCU) > As I mentioned in my email: if your point is that "slab_nomerge" has > the wrong default value, then that is a different discussion, and one > that may well be valid. > > But the whole concept of "random slabs can mark themselves no-merge > for no obvious reasons" is broken. That was my argument, and you don't > seem to get it. I'm not getting it because I don't understand why you really care. What implied benefits come with slab merging that I'm painfully unaware of? Andrew said DM would miss out on performance benefits. I'd obviously not want to do that; but said performance benefits haven't been made apparent. > And even if it turns out not to be broken (please explain), it still > should have been discussed. See above ;) > > SLAB_NO_MERGE gives subsystems a choice they didn't have before and they > > frankly probably never knew they had to care about it because they didn't > > know slabs were being merged. I asked around enough to know I'm not an > > idiot for having missed the memo on slab merging. > > Put another way: things have been merged for years, and you didn't even notice. > > Seriously. I'm not exaggerating about "for years". At least for slub, > it's been that way since it was initially merged, back in 2007. > Yeah, it may have taken a while for slub to then become one of the > major allocators, but it's been the default in at least Fedora for > years and years too, afaik, so it's not like slub is something odd and > unusual. You're also coming at this from a position that shared slabs are automatically good because they have been around for years. For those years I've not had a need to debug a leak in code I maintain; so I didn't notice slabs were merged. I also haven't observed slab corruption being the cause of crashes in DM, block or SCSI. > You seem to argue that "not being aware of it" means that it's > surprising and should be disabled. But quite frankly, wouldn't you say > that "it hasn't caused any obvious problems" is at _least_ as likely > an explanation for you not being aware of it? Sure. > Because clearly, that lack of statistics and the possible > cross-subsystem corruption hasn't actually been a pressing concern in > reality. Agreed. > But suddenly it became such a big issue that you just _had_ to fix it, > right? After seven years it's suddenly *so* important that dm > absolutely has to disable it. And it really had to be dm that did it > for its caches, rather than just use "slab_nomerge". The ship sailed on disabling it for everyone. It is the new norm. I cannot push RHEL to flip-flop slab characteristics (at least not until the next major release). > Despite there not being anything dm-specific about that choice. > > Now tell me, what was the rationale for this all again? I was the first to want the option to opt-out on a per slab basis. And you're shooting the messenger. Calling me illogical. > Because really, I'm not seeing it. And I'm _particularly_ not seeing > why it then had to be sneaked in like this. And I'm a sneaky too... Sneaking isn't what this was. Apologies if that's how it came off. I can appreciate why you might think that. But like I said to Andrew: won't happen again. I'm off the next 5 days. I don't think either of us care _that_ strongly about this particular issue. I've noted my process flaws. I'll calm down and this will just be some unfortunate thing that happened. But I'd still like some pointers/help on what makes slab merging so beneficial. I'm sure Christoph and others have justification. But if not then yes the default to slab merging probably should be revisited. Mike -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io0-f181.google.com (mail-io0-f181.google.com [209.85.223.181]) by kanga.kvack.org (Postfix) with ESMTP id B31ED6B0254 for ; Wed, 2 Sep 2015 23:10:16 -0400 (EDT) Received: by ioiz6 with SMTP id z6so43357487ioi.2 for ; Wed, 02 Sep 2015 20:10:16 -0700 (PDT) Received: from resqmta-po-09v.sys.comcast.net (resqmta-po-09v.sys.comcast.net. [2001:558:fe16:19:96:114:154:168]) by mx.google.com with ESMTPS id q76si9064983ioe.102.2015.09.02.20.10.15 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Wed, 02 Sep 2015 20:10:15 -0700 (PDT) Date: Wed, 2 Sep 2015 22:10:12 -0500 (CDT) From: Christoph Lameter Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) In-Reply-To: <20150903023125.GC27804@redhat.com> Message-ID: References: <20150903005115.GA27804@redhat.com> <20150903023125.GC27804@redhat.com> Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-linux-mm@kvack.org List-ID: To: Mike Snitzer Cc: Linus Torvalds , Heinz Mauelshagen , Andrew Morton , Viresh Kumar , Dave Chinner , Joe Thornber , Pekka Enberg , linux-mm , "dm-devel@redhat.com" , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , David Rientjes , Joonsoo Kim , Alasdair G Kergon On Wed, 2 Sep 2015, Mike Snitzer wrote: > You're also coming at this from a position that shared slabs are > automatically good because they have been around for years. > > For those years I've not had a need to debug a leak in code I maintain; > so I didn't notice slabs were merged. I also haven't observed slab > corruption being the cause of crashes in DM, block or SCSI. Hmmm... Thats unusual. I have seen numerous leaks and corruptions that were debugged using the additional debug code in the slab allocators. Merging and debugging can be switched on at runtime if necessary and then you will have a clear separation to be able to track down the offending code as well as detailed problem reports that help to figure out what was wrong. It is then typically even possible to fix these bugs without getting the subsystem specialists involved. > > Because clearly, that lack of statistics and the possible > > cross-subsystem corruption hasn't actually been a pressing concern in > > reality. > > Agreed. To the effect now that even SLAB has adopted cache merging. > But I'd still like some pointers/help on what makes slab merging so > beneficial. I'm sure Christoph and others have justification. But if > not then yes the default to slab merging probably should be revisited. Well, we have discussed the pros and cons for merging a couple of times but the general consensus was that it is beneficial. Performance on modern cpu is very sensitive to cache footprint and reducing the overhead of meta data for object allocation is a worthwhile goal. Also objects are more likely to be kept cache hot if they can be used by multiple subsystems. Slab merging also helps with reducing fragmentation since the free objects on one page can be used for other purposes. Check out the linux-mm archives for these dissussions. This has been such an advantage that the feature was ported to SLAB (to much more signficant effect than SLUB since SLAB is a pig with metadata per node, per cpu and per kmem_cache). And yes sorry the consequence is now that you do no longer have a choice. Both slab allocators default to merging. SLAB had some difficulty staying competitive in performance without that. Joonsoo Kim made SLAB more competitive last year and one of the optimizations was to also support merging. -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io0-f177.google.com (mail-io0-f177.google.com [209.85.223.177]) by kanga.kvack.org (Postfix) with ESMTP id 9B8196B0254 for ; Wed, 2 Sep 2015 23:12:00 -0400 (EDT) Received: by ioiz6 with SMTP id z6so43388293ioi.2 for ; Wed, 02 Sep 2015 20:12:00 -0700 (PDT) Received: from mail-ig0-x231.google.com (mail-ig0-x231.google.com. [2607:f8b0:4001:c05::231]) by mx.google.com with ESMTPS id q77si20314233ioe.201.2015.09.02.20.11.59 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 02 Sep 2015 20:11:59 -0700 (PDT) Received: by igcrk20 with SMTP id rk20so39999462igc.1 for ; Wed, 02 Sep 2015 20:11:59 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <20150903023125.GC27804@redhat.com> References: <20150903005115.GA27804@redhat.com> <20150903023125.GC27804@redhat.com> Date: Wed, 2 Sep 2015 20:11:59 -0700 Message-ID: Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) From: Linus Torvalds Content-Type: text/plain; charset=UTF-8 Sender: owner-linux-mm@kvack.org List-ID: To: Mike Snitzer Cc: Heinz Mauelshagen , Andrew Morton , Viresh Kumar , Dave Chinner , Joe Thornber , Pekka Enberg , linux-mm , "dm-devel@redhat.com" , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , David Rientjes , Joonsoo Kim , Christoph Lameter , Alasdair G Kergon On Wed, Sep 2, 2015 at 7:31 PM, Mike Snitzer wrote: > > Why do we even have slab creation flags? Ehh? Because they are meaningful? Things like SLAB_DESTROY_BY_RCU have real semantic meaning. The subsystem that creates the slab *cares*, and it makes sense because that kind of choice really fundamentally is a per-slab choice. >> .. and again, absolutely NEITHER of those have anything to do >> "subsystem X". > > OK, I get that I'm unimportant. You can stop beating me over my > irrelevant subsystem maintainer head now... What the hell is your problem? At no point did I state that you are any less important than anything else. But this isssue is simply not in any way specific to dm. dm is not any less important than anything else, but dm is also not magically *more* important than everything else. Really. Then you seem to take it personally, but please realize that that is *your* issue, not mine. > But when longstanding isolation and functionality is removed in the name > of microoptimizations its difficult to accept -- even if the realization > occurs years after the fact. Bullshit. You didn't notice. For years. It just wasn't important. Just admit it. Those things you now tout as so important are complete non-issues. But more importantly, and this is what you seem to not really get at all, is that it's STILL not dm-specific. If you think that isolation is so important, then tell me why isolation is only important for dm? Why isn't it important for everything else? What makes dm so special? Really. I've asked you three times now, and you seem to not get it, you just think I'm trying to put you in your place. I'm not. I'm asking a serious question: what makes dm so special that it has to have different allocation logic from everything else. And *THAT* is why SLAB_DESTROY_BY_RCU is different from your SLAB_NO_MERGE. Because I can actually answer the question: "What makes sighand_cachep need SLAB_DESTROY_BY_RCU but not other users?" with a real technical reason. > I'm not getting it because I don't understand why you really care. What > implied benefits come with slab merging that I'm painfully unaware of? It does actually have less overhead, for one thing. The separation of slabs doesn't cost you just in the slab data structure itself, but in the memory fragmentation. Having multiple slabs share the backing pool of pages uses less memory. > You're also coming at this from a position that shared slabs are > automatically good because they have been around for years. No, I'm really not. Christ, have you read anything I wrote? I'm ok with discussing the "the defaults should be turned around". But at least we *have* an option to turn that default around, so when people care (because they are trying to chase down a slab corruption issue, for example), they can do so. Your patch actually gets rid of that choice, and forces things the other way around. So I would argue that your patch actually makes things *worse*. It hardcodes an arbitrary choice, and it's not even a choice that makes obvious sense. And no, the memory fragmentation issue isn't just made up. One of the downsides of slab was historically that it used a lot of memory, and to be honest, I suspect the percpu queues have made things worse. At least sharing the backing store minimizes the effect of that somewhat. We used to have numbers for this all, but it's really approaching a decade since the whole initial SLUB vs SLAB things, so I don't know where to point you. But the reason I say "it's not a choice that makes obvious sense" isn't even because I'm convinced that the merging is always the best option. I *am* convinced that it has real upsides, but I also agree that it has downsides. But at least as it is right now, the system admin can make a choice. You arbitrarily wanted to take that choice away for dm, without apparently even knowing what the upsides of merging might be. But the *real* issue I have with it is the completely random "dm is different from everything else" thing. Which is bogus. That's what I wanted to know: what makes dm so special that it should be different from everything else? And apparently you don't have an answer to that. You just took my repeated questioning to mean that you're worthless. That wasn't the intent. It was very much a literal "what's so different about dm that it would act differently from everything else"? > The ship sailed on disabling it for everyone. It is the new norm. I > cannot push RHEL to flip-flop slab characteristics (at least not until > the next major release). But you can. Today. Put "slab_nomerge" on the kernel command line. Really. If you care, you can do that. And if you _don't_ care, then clearly not doing that doesn't hurt either. > I was the first to want the option to opt-out on a per slab basis. And > you're shooting the messenger. Calling me illogical. But the opt-in shouldn't be *you*, it should be the system maintainer who can actually tune for his load, or cares about memory use, or wants to debug, or any number of issues. See? Btw, I do agree that the "all or nothing" approach of "slab_nomerge" isn't optimal. But you made things *worse*. You took a tunable, and made it non-tunable, without apparently even knowing what it tuned for. Sure, it was a damn coarse-grained tunable, but you made *that* worse too, since with your code it's not tunable at all for dm. So your version isn't actually any more "fine-grained". Now, what might be interesting - *if* people actually want to tune just one set of slabs and not another - migth be to extend the "slab_nomerge" option to actually take a pattern of slab names, and match that way. So then you could say "slab_nomerge=dm_* slab_nomerge=xfs*", and you'd not merge dm or xfs slabs. I wouldn't mind that kind of approach at all. But please understand _why_ I wouldn't mind it: I wouldn't mind it exactly because you didn't take tuning choice away from people, but because such a patch would actually give people control of it. And it *wouldn't* be dm-specific, because other people might ask to not merge ext4 slabs or whatever. And for a similar reason, I actually wouldn't mind switching the default around for merging. I'm *not* married to the "we have to merge slab caches by default" model. It used to make sense, and I know I've seen numbers (I'm pretty sure Christoph Lameter had several talks about it back in the days), but things can change. But what doesn't make sense is to make random willy-nilly decisions on a basis that makes no sense. And I do claim that random subsystems just unilaterally deciding that they don't care about system default memory management falls under that "makes no sense" heading. Linus -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ig0-f169.google.com (mail-ig0-f169.google.com [209.85.213.169]) by kanga.kvack.org (Postfix) with ESMTP id 9F5CF6B0254 for ; Thu, 3 Sep 2015 00:55:15 -0400 (EDT) Received: by igbni9 with SMTP id ni9so31043026igb.0 for ; Wed, 02 Sep 2015 21:55:15 -0700 (PDT) Received: from mail.linuxfoundation.org (mail.linuxfoundation.org. [140.211.169.12]) by mx.google.com with ESMTPS id y10si4336079igf.95.2015.09.02.21.55.14 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 02 Sep 2015 21:55:15 -0700 (PDT) Date: Wed, 2 Sep 2015 21:55:12 -0700 From: Andrew Morton Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) Message-Id: <20150902215512.9d0d62e74fa2f0a460a42af9@linux-foundation.org> In-Reply-To: References: <20150903005115.GA27804@redhat.com> <20150903023125.GC27804@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-linux-mm@kvack.org List-ID: To: Christoph Lameter Cc: Mike Snitzer , Linus Torvalds , Heinz Mauelshagen , Viresh Kumar , Dave Chinner , Joe Thornber , Pekka Enberg , linux-mm , "dm-devel@redhat.com" , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , David Rientjes , Joonsoo Kim , Alasdair G Kergon On Wed, 2 Sep 2015 22:10:12 -0500 (CDT) Christoph Lameter wrote: > > But I'd still like some pointers/help on what makes slab merging so > > beneficial. I'm sure Christoph and others have justification. But if > > not then yes the default to slab merging probably should be revisited. > > ... > > Check out the linux-mm archives for these dissussions. Somewhat OT, but... The question Mike asks should be comprehensively answered right there in the switch-to-merging patch's changelog. The fact that it is not answered in the appropriate place and that we're reduced to vaguely waving at the list archives is a fail. And a lesson! -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io0-f182.google.com (mail-io0-f182.google.com [209.85.223.182]) by kanga.kvack.org (Postfix) with ESMTP id 61D8C6B0254 for ; Thu, 3 Sep 2015 02:03:01 -0400 (EDT) Received: by iofb144 with SMTP id b144so46679425iof.1 for ; Wed, 02 Sep 2015 23:03:01 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com. [209.132.183.28]) by mx.google.com with ESMTPS id bz5si39731601pdb.0.2015.09.02.23.03.00 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 02 Sep 2015 23:03:00 -0700 (PDT) Date: Thu, 3 Sep 2015 16:02:47 +1000 From: Dave Chinner Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) Message-ID: <20150903060247.GV1933@devil.localdomain> References: <20150903005115.GA27804@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Sender: owner-linux-mm@kvack.org List-ID: To: Linus Torvalds Cc: Mike Snitzer , Christoph Lameter , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm On Wed, Sep 02, 2015 at 06:21:02PM -0700, Linus Torvalds wrote: > On Wed, Sep 2, 2015 at 5:51 PM, Mike Snitzer wrote: > > > > What I made possible with SLAB_NO_MERGE is for each subsystem to decide > > if they would prefer to not allow slab merging. > > .. and why is that a choice that even makes sense at that level? > > Seriously. > > THAT is the fundamental issue here. It makes a lot more sense than you think, Linus. One of the reasons slab caches exist is to separate objects of identical characteristics from the heap allocator so that they are all grouped together in memory and so can be allocated/freed efficiently. This helps prevent heap fragmentation, allows objects to pack as tightly together as possible, gives direct measurement of the number of objects, the memory usage, the fragmentation factor, etc. Containment of memory corruption is another historical reason for slab separation (proof: current memory debugging options always causes slab separation). Slab merging is the exact opposite of this - we're taking homogenous objects and mixing them with other homogneous containing different objects with different life times. Indeed, we are even mixing them back into the slabs used for the heap, despite the fact the original purpose of named slabs was to separate allocation from the heap... Don't get me wrong - this isn't necessarily bad - but I'm just pointing out that slab merging is doing the opposite of what slabs were originally intended for. Indeed, a lot of people use slab caches just because it's anice encapsulation, not for any specific performance, visibility or anti-fragmentation purposes. I have no problems with automatically merging slabs created like this. However the fact that we are merging slabs automatically for all slabs now has made me think a bit deeper about the problems that can result from this. > There are absolutely zero reasons this is dm-specific, but it is > equally true that there are absolutely zero reasons that it is > xyzzy-specific, for any random value of 'xyzzy'. Right, it's not xyzzy-specific where 'xyzzy' is a subsystem. The flag application is actually *object specific*. That is, the use of the individual objects that determines whether it should be merged or not. e.g. Slab fragmentation levels are affected more than anything by mixing objects with different life times in the same slab. i.e. if we free all the short lived objects from a page but there is one long lived object on the page then that page is pinned and we free no memory. Do that to enough pages in the slab, and we end up with a badly fragmented slab. With slab merging, we have no control over what slabs are merged. We may be merging slabs with objects that have vastly different life times. Hence merging may actually be making one of the underlying cause of slab fragmentation worse rather than better. It really depends on what slabs get merged together and that's largely random chance - you don't get to pick the size of your structures.... Another contributor to slab fragmentation is when allocation order is very different to object freeing order. Pages in the slab get fill up using an algorithm that optimises for temporal locality. i.e. it will fill a partial page before moving on to the next partial page or allocating a new page. If the freeing of objects doesn't have the same temporal locality as allocation then when the slab grows and shrinks we end up with fragmentation. Mixing different object types into the same pages pretty much guarantees that we'll be mixing objects of different alloc/freeing order. Further, rapid growth and shrinking of a slab cache due to memory demand can cause fragmentation. Caches that have this problem are usually those that have a shrinker associated with them. The shrinker causes objects to have a variable, unpredictable lifetime and hence can break allocation/freeing locality (as per above, even for single object slabs). Minmising the effect of this reclaim fragmentation is often held up as the example of why slab merging is good - the other object types fill all the holes and hence reduces the overall fragmentation of the slab. Further, the density of the reclaimable objects is lower, so the slab doesn't fragment as much. On the surface, this looks like a big win but it's not - it's actually a major problem for slab reclaim and it manifests when there are large bursts of allocation activity followed by sudden reclaim activity. When the slab grows rapidly, we get the majority of objects on a page being of one type, but a couple will be of a different type. Than under memory pressure, the shrinker can then only free the majority of objects on a page, guaranteeing the slab will remain fragmented under memory pressure. Continuing to run the shrinker won't result in any more memory being freed from the merged slab and so we are stuck with unfixable slab fragmentation. However, if the slab with a shrinker only contains one kind of object, when it becomes fragmented due to variable object lifetime, continued memory pressure will cause it to keep shrinking and hence will eventually correct the fragmentation problem. This is a much more robust configuration - the system will self correct without user intervention being necessary. IOWs, slab merging prevents us from implementing effective active fragmentation management algorithms and hence prevents us from reducing slab fragmentation via improved shrinker reclaim algorithms. Simply put: slab merging reduces the effectiveness of shrinker based slab reclaim. A key observation I just made: we are extremely lucky that many of the critical slab caches in the system are not affected by merging. A slab cache with a constructor will not get merged and that means inode caches do not get merged. Hence, despite slab merging being enabled, one of the largest memory consuming slabs in the system does not get merged and hence it means the shrinker has been able to do it's job without interference. hence we've avoided the worst outcome of merging slabs by default by luck rather than good managment. Moving on from fragmentation: Slab caches can also back mempools. mempools ar eused to guarantee forwards progress under memory pressure, so it's important to have visibility into their behaviour. Hence it makes sense to ensure these don't get merged with other slabs so they are accounted accurately and we can see exactly the demand being placed on these critical slabs under heavy memory pressure. I've made use of this several times over the past few years to discover why a system is floundering under heavy memory pressure (e.g. writeback way slower than it should have been because the xfs_ioend mempool was operating in 1-in, 1-out mode)... So, when I said that I could use the SLAB_NO_MERGE for some caches in XFS and acked the patch, I was refering to exactly this sort of usage - the slabs that back mempools and the slabs that have a shrinker for reclaim should have this flag set. 4 of 17 named slabs in XFS need this flag - the rest I don't really care about because their memory usage can be inferred from the shrinkable slab cache sizes. Managing slab caches and fragmentation is anything but simple and there is no one right solution. Slab merging in some cases makes sense, but there are several very good reasons for not merging a slab. The right solution is often difficult for people without object-specific expertise to understand, but that goes for just about everything in the kernel these days. BTW, it is trivial to achieve SLAB_NO_MERGE simply by supplying a dummy constructor to the slab initialisation. I'd much prefer SLAB_NO_MERGE or some variant, though. Cheers, Dave. -- Dave Chinner dchinner@redhat.com -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io0-f182.google.com (mail-io0-f182.google.com [209.85.223.182]) by kanga.kvack.org (Postfix) with ESMTP id 252A86B0254 for ; Thu, 3 Sep 2015 02:09:25 -0400 (EDT) Received: by ioiz6 with SMTP id z6so46519523ioi.2 for ; Wed, 02 Sep 2015 23:09:24 -0700 (PDT) Received: from mail-ig0-x22d.google.com (mail-ig0-x22d.google.com. [2607:f8b0:4001:c05::22d]) by mx.google.com with ESMTPS id m185si4603064iom.21.2015.09.02.23.09.24 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 02 Sep 2015 23:09:24 -0700 (PDT) Received: by igcpb10 with SMTP id pb10so6966893igc.1 for ; Wed, 02 Sep 2015 23:09:24 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <20150902215512.9d0d62e74fa2f0a460a42af9@linux-foundation.org> References: <20150903005115.GA27804@redhat.com> <20150903023125.GC27804@redhat.com> <20150902215512.9d0d62e74fa2f0a460a42af9@linux-foundation.org> Date: Thu, 3 Sep 2015 09:09:24 +0300 Message-ID: Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) From: Pekka Enberg Content-Type: text/plain; charset=UTF-8 Sender: owner-linux-mm@kvack.org List-ID: To: Andrew Morton Cc: Christoph Lameter , Mike Snitzer , Linus Torvalds , Heinz Mauelshagen , Viresh Kumar , Dave Chinner , Joe Thornber , linux-mm , "dm-devel@redhat.com" , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , David Rientjes , Joonsoo Kim , Alasdair G Kergon Hi Andrew, On Wed, 2 Sep 2015 22:10:12 -0500 (CDT) Christoph Lameter wrote: >> > But I'd still like some pointers/help on what makes slab merging so >> > beneficial. I'm sure Christoph and others have justification. But if >> > not then yes the default to slab merging probably should be revisited. >> >> ... >> >> Check out the linux-mm archives for these dissussions. On Thu, Sep 3, 2015 at 7:55 AM, Andrew Morton wrote: > Somewhat OT, but... The question Mike asks should be comprehensively > answered right there in the switch-to-merging patch's changelog. > > The fact that it is not answered in the appropriate place and that > we're reduced to vaguely waving at the list archives is a fail. And a > lesson! Slab merging is a technique to reduce memory footprint and memory fragmentation. Joonsoo reports 3% slab memory reduction after boot when he added the feature to SLAB: commit 12220dea07f1ac6ac717707104773d771c3f3077 Author: Joonsoo Kim Date: Thu Oct 9 15:26:24 2014 -0700 mm/slab: support slab merge Slab merge is good feature to reduce fragmentation. If new creating slab have similar size and property with exsitent slab, this feature reuse it rather than creating new one. As a result, objects are packed into fewer slabs so that fragmentation is reduced. Below is result of my testing. * After boot, sleep 20; cat /proc/meminfo | grep Slab Slab: 25136 kB Slab: 24364 kB We can save 3% memory used by slab. For supporting this feature in SLAB, we need to implement SLAB specific kmem_cache_flag() and __kmem_cache_alias(), because SLUB implements some SLUB specific processing related to debug flag and object size change on these functions. Signed-off-by: Joonsoo Kim Cc: Christoph Lameter Cc: Pekka Enberg Cc: David Rientjes Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds We don't have benchmarks to directly measure its performance impact but you should see its effect via something like netperf that stresses the allocator heavily. The assumed benefit is that you're able to recycle cache hot objects much more efficiently as SKB cache and friends are merged to regular kmalloc caches. In any case, reducing kernel memory footprint already is a big win for various use cases, so keeping slab merging on by default is desirable. - Pekka -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io0-f180.google.com (mail-io0-f180.google.com [209.85.223.180]) by kanga.kvack.org (Postfix) with ESMTP id 8F3756B0254 for ; Thu, 3 Sep 2015 02:13:52 -0400 (EDT) Received: by ioiz6 with SMTP id z6so46604797ioi.2 for ; Wed, 02 Sep 2015 23:13:52 -0700 (PDT) Received: from mail-ig0-x231.google.com (mail-ig0-x231.google.com. [2607:f8b0:4001:c05::231]) by mx.google.com with ESMTPS id 194si12742497ioo.107.2015.09.02.23.13.52 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 02 Sep 2015 23:13:52 -0700 (PDT) Received: by igbkq10 with SMTP id kq10so41868774igb.0 for ; Wed, 02 Sep 2015 23:13:51 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <20150903060247.GV1933@devil.localdomain> References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> Date: Thu, 3 Sep 2015 09:13:51 +0300 Message-ID: Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) From: Pekka Enberg Content-Type: text/plain; charset=UTF-8 Sender: owner-linux-mm@kvack.org List-ID: To: Dave Chinner Cc: Linus Torvalds , Mike Snitzer , Christoph Lameter , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm On Thu, Sep 3, 2015 at 9:02 AM, Dave Chinner wrote: > One of the reasons slab caches exist is to separate objects of > identical characteristics from the heap allocator so that they are > all grouped together in memory and so can be allocated/freed > efficiently. This helps prevent heap fragmentation, allows objects > to pack as tightly together as possible, gives direct measurement of > the number of objects, the memory usage, the fragmentation factor, > etc. Containment of memory corruption is another historical reason > for slab separation (proof: current memory debugging options always > causes slab separation). > > Slab merging is the exact opposite of this - we're taking homogenous > objects and mixing them with other homogneous containing different > objects with different life times. Indeed, we are even mixing them > back into the slabs used for the heap, despite the fact the original > purpose of named slabs was to separate allocation from the heap... > > Don't get me wrong - this isn't necessarily bad - but I'm just > pointing out that slab merging is doing the opposite of what slabs > were originally intended for. Indeed, a lot of people use slab > caches just because it's anice encapsulation, not for any specific > performance, visibility or anti-fragmentation purposes. I have no > problems with automatically merging slabs created like this. Yes, absolutely. Alternative to slab merging is to actually reduce the number of caches we create in the first place and use kmalloc() wherever possible. - Pekka -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pa0-f52.google.com (mail-pa0-f52.google.com [209.85.220.52]) by kanga.kvack.org (Postfix) with ESMTP id AA5AC6B0254 for ; Thu, 3 Sep 2015 04:53:27 -0400 (EDT) Received: by pacfv12 with SMTP id fv12so41253154pac.2 for ; Thu, 03 Sep 2015 01:53:27 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com. [209.132.183.28]) by mx.google.com with ESMTPS id bx12si40348267pdb.198.2015.09.03.01.53.26 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 Sep 2015 01:53:26 -0700 (PDT) Date: Thu, 3 Sep 2015 18:53:14 +1000 From: Dave Chinner Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) Message-ID: <20150903085314.GW1933@devil.localdomain> References: <20150903005115.GA27804@redhat.com> <20150903023125.GC27804@redhat.com> <20150902215512.9d0d62e74fa2f0a460a42af9@linux-foundation.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Sender: owner-linux-mm@kvack.org List-ID: To: Pekka Enberg Cc: Andrew Morton , Christoph Lameter , Mike Snitzer , Linus Torvalds , Heinz Mauelshagen , Viresh Kumar , Joe Thornber , linux-mm , "dm-devel@redhat.com" , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , David Rientjes , Joonsoo Kim , Alasdair G Kergon On Thu, Sep 03, 2015 at 09:09:24AM +0300, Pekka Enberg wrote: > Hi Andrew, > > On Wed, 2 Sep 2015 22:10:12 -0500 (CDT) Christoph Lameter wrote: > >> > But I'd still like some pointers/help on what makes slab merging so > >> > beneficial. I'm sure Christoph and others have justification. But if > >> > not then yes the default to slab merging probably should be revisited. > >> > >> ... > >> > >> Check out the linux-mm archives for these dissussions. > > On Thu, Sep 3, 2015 at 7:55 AM, Andrew Morton wrote: > > Somewhat OT, but... The question Mike asks should be comprehensively > > answered right there in the switch-to-merging patch's changelog. > > > > The fact that it is not answered in the appropriate place and that > > we're reduced to vaguely waving at the list archives is a fail. And a > > lesson! > > Slab merging is a technique to reduce memory footprint and memory > fragmentation. Joonsoo reports 3% slab memory reduction after boot > when he added the feature to SLAB: I'm not sure whether you are trying to indicate that it was justified inteh commit message or indicate how little justification there was... > commit 12220dea07f1ac6ac717707104773d771c3f3077 > Author: Joonsoo Kim > Date: Thu Oct 9 15:26:24 2014 -0700 > > mm/slab: support slab merge > > Slab merge is good feature to reduce fragmentation. If new creating slab > have similar size and property with exsitent slab, this feature reuse it > rather than creating new one. As a result, objects are packed into fewer > slabs so that fragmentation is reduced. A partial page or two in a newly allocated slab in not "fragmentation". They are simply free objects in the cache that haven't been allocated yet. Fragmentation occurs when large numbers of objects are freed so the pages end up mostly empty but cannot be freed because there is still 1 or 2 objects in use of them. As such, if there was fragementation and slab merging fixed it, I'd expect to be seeing a much larger reduction in memory usage.... > Below is result of my testing. > > * After boot, sleep 20; cat /proc/meminfo | grep Slab > > > Slab: 25136 kB > > > Slab: 24364 kB > > We can save 3% memory used by slab. The numbers don't support the conclusion. Memory used from boot to boot always varies by a small amount - a slight difference in the number of files accessed by the boot process can account for this. Also, you can't 't measure slab fragmentation by measuring the amount of memory used. You have to look at object counts in each slab and work out the percentage of free vs allocated objects. So there's no evidence that this 772kb difference in memory footprint can even be attributed to slab merging. What about the rest of the slab fragmentation problem space? It's not even mentioned in the commit, but that's really what is important to long running machines. IOWs, where's description of the problem that needs fixing? What's the example workload that demonstrates the problem? What's the before and after measurements of the workloads that generate significant slab fragmentation? What's the long term impact of the change (e.g. a busy server with a uptime of several weeks)? is the fragmentation level reduced? increased? not significant? What impact does this have on subsystems with shrinkers that are now operating on shared slabs? Do the shrinkers still work as effectively as they used to? Do they now cause slab fragmentation, and if they do, does it self correct under continued memory pressure? And with the patch being merged without a single reviewed-by or acked-by, I'm sitting here wondering how we managed to fail software engineering 101 so badly here? Cheers, Dave. -- Dave Chinner dchinner@redhat.com -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io0-f174.google.com (mail-io0-f174.google.com [209.85.223.174]) by kanga.kvack.org (Postfix) with ESMTP id 05B996B0254 for ; Thu, 3 Sep 2015 06:30:03 -0400 (EDT) Received: by iofh134 with SMTP id h134so52682351iof.0 for ; Thu, 03 Sep 2015 03:30:02 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com. [209.132.183.28]) by mx.google.com with ESMTPS id bd3si40750437pdb.204.2015.09.03.03.30.01 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 Sep 2015 03:30:02 -0700 (PDT) Date: Thu, 3 Sep 2015 12:29:49 +0200 From: Jesper Dangaard Brouer Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) Message-ID: <20150903122949.78ee3c94@redhat.com> In-Reply-To: <20150903060247.GV1933@devil.localdomain> References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-linux-mm@kvack.org List-ID: To: Dave Chinner Cc: brouer@redhat.com, Linus Torvalds , Mike Snitzer , Christoph Lameter , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm On Thu, 3 Sep 2015 16:02:47 +1000 Dave Chinner wrote: > On Wed, Sep 02, 2015 at 06:21:02PM -0700, Linus Torvalds wrote: > > On Wed, Sep 2, 2015 at 5:51 PM, Mike Snitzer wrote: > > > > > > What I made possible with SLAB_NO_MERGE is for each subsystem to decide > > > if they would prefer to not allow slab merging. > > > > .. and why is that a choice that even makes sense at that level? > > > > Seriously. > > > > THAT is the fundamental issue here. > > It makes a lot more sense than you think, Linus. > [...] > > On the surface, this looks like a big win but it's not - it's > actually a major problem for slab reclaim and it manifests when > there are large bursts of allocation activity followed by sudden > reclaim activity. When the slab grows rapidly, we get the majority > of objects on a page being of one type, but a couple will be of a > different type. Than under memory pressure, the shrinker can then > only free the majority of objects on a page, guaranteeing the slab > will remain fragmented under memory pressure. Continuing to run the > shrinker won't result in any more memory being freed from the merged > slab and so we are stuck with unfixable slab fragmentation. > > However, if the slab with a shrinker only contains one kind of > object, when it becomes fragmented due to variable object lifetime, > continued memory pressure will cause it to keep shrinking and hence > will eventually correct the fragmentation problem. This is a much > more robust configuration - the system will self correct without > user intervention being necessary. > > IOWs, slab merging prevents us from implementing effective active > fragmentation management algorithms and hence prevents us from > reducing slab fragmentation via improved shrinker reclaim > algorithms. Simply put: slab merging reduces the effectiveness of > shrinker based slab reclaim. I'm buying into the problem of variable object lifetime sharing the same slub. With the SLAB bulk free API I'm introducing, we can speedup slub slowpath, by free several objects with a single cmpxchg_double, BUT these objects need to belong to the same page. Thus, as Dave describe with merging, other users of the same size objects might end up holding onto objects scattered across several pages, which gives the bulk free less opportunities. That would be a technical argument for introducing a SLAB_NO_MERGE flag per slab. But I want to do some measurement before making any decision. And it might be hard to show for my use-case of SKB free, because SKB allocs will likely be dominating 256 bytes slab anyhow. -- Best regards, Jesper Dangaard Brouer MSc.CS, Sr. Network Kernel Developer at Red Hat Author of http://www.iptv-analyzer.org LinkedIn: http://www.linkedin.com/in/brouer -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io0-f170.google.com (mail-io0-f170.google.com [209.85.223.170]) by kanga.kvack.org (Postfix) with ESMTP id 53C816B0254 for ; Thu, 3 Sep 2015 11:02:46 -0400 (EDT) Received: by iofb144 with SMTP id b144so61547574iof.1 for ; Thu, 03 Sep 2015 08:02:46 -0700 (PDT) Received: from mail-ig0-x233.google.com (mail-ig0-x233.google.com. [2607:f8b0:4001:c05::233]) by mx.google.com with ESMTPS id 90si8333083ioq.190.2015.09.03.08.02.42 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 Sep 2015 08:02:42 -0700 (PDT) Received: by igbkq10 with SMTP id kq10so16582945igb.0 for ; Thu, 03 Sep 2015 08:02:42 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <20150903060247.GV1933@devil.localdomain> References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> Date: Thu, 3 Sep 2015 08:02:40 -0700 Message-ID: Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) From: Linus Torvalds Content-Type: text/plain; charset=UTF-8 Sender: owner-linux-mm@kvack.org List-ID: To: Dave Chinner Cc: Mike Snitzer , Christoph Lameter , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm On Wed, Sep 2, 2015 at 11:02 PM, Dave Chinner wrote: > On Wed, Sep 02, 2015 at 06:21:02PM -0700, Linus Torvalds wrote: >> On Wed, Sep 2, 2015 at 5:51 PM, Mike Snitzer wrote: >> > >> > What I made possible with SLAB_NO_MERGE is for each subsystem to decide >> > if they would prefer to not allow slab merging. >> >> .. and why is that a choice that even makes sense at that level? >> >> Seriously. >> >> THAT is the fundamental issue here. > > It makes a lot more sense than you think, Linus. Not really. Even your argument isn't at all arguing for doing things at a per-subsystem level - it's an argument about the potential sanity of marking _individual_ slab caches non-mergable, not an argument for something clearly insane like "mark all slabs for subsystem X unmergable". Can you just admit that that was insane? There is *no* sense in that kind of behavior. > Right, it's not xyzzy-specific where 'xyzzy' is a subsystem. The > flag application is actually *object specific*. That is, the use of > the individual objects that determines whether it should be merged > or not. Yes. I do agree that something like SLAB_NO_MERGE can make sense on an actual object-specific level, if you have very specific allocation pattern knowledge and can show that the merging actually hurts. But making the subsystem decide that all its slab caches should be "no-merge" is just BS. You know that. It makes no sense, just admit it. > e.g. Slab fragmentation levels are affected more than anything by > mixing objects with different life times in the same slab. i.e. if > we free all the short lived objects from a page but there is one > long lived object on the page then that page is pinned and we free > no memory. Do that to enough pages in the slab, and we end up with a > badly fragmented slab. The thing is, *if* you can show that kind of behavior for a particular slab, and have numbers for it, then mark that slab as no-merge, and document why you did it. Even then, I'd personally probably prefer to name the bit differently: rather than talk about an internal implementation detail within slab ("don't merge") it would probably be better to try to frame it in the semantic different you are looking for (ie in "I want a slab with private allocation patterns"). But aside from that kind of naming issue, that's very obviously not what the patch series discussed was doing. And quite frankly, I don't actually think you have the numbers to show that theoretical bad behavior. In contrast, there really *are* numbers to show the advantages of merging. So the fragmentation argument has been shown to generally be in favor of merging, _not_ in favor of that "no-merge" behavior. If you have an actual real load where that isn't the case, and can show it, then that would be interesting, but at no point is that "the subsystem just decided to mark all its slabs no-merge". Linus -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ig0-f178.google.com (mail-ig0-f178.google.com [209.85.213.178]) by kanga.kvack.org (Postfix) with ESMTP id F3DCF6B0276 for ; Thu, 3 Sep 2015 12:19:55 -0400 (EDT) Received: by igbkq10 with SMTP id kq10so18480839igb.0 for ; Thu, 03 Sep 2015 09:19:55 -0700 (PDT) Received: from resqmta-po-02v.sys.comcast.net (resqmta-po-02v.sys.comcast.net. [2001:558:fe16:19:96:114:154:161]) by mx.google.com with ESMTPS id m130si15937568ioe.55.2015.09.03.09.19.55 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Thu, 03 Sep 2015 09:19:55 -0700 (PDT) Date: Thu, 3 Sep 2015 11:19:53 -0500 (CDT) From: Christoph Lameter Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) In-Reply-To: <20150903122949.78ee3c94@redhat.com> Message-ID: References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> <20150903122949.78ee3c94@redhat.com> Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-linux-mm@kvack.org List-ID: To: Jesper Dangaard Brouer Cc: Dave Chinner , Linus Torvalds , Mike Snitzer , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm On Thu, 3 Sep 2015, Jesper Dangaard Brouer wrote: > > IOWs, slab merging prevents us from implementing effective active > > fragmentation management algorithms and hence prevents us from > > reducing slab fragmentation via improved shrinker reclaim > > algorithms. Simply put: slab merging reduces the effectiveness of > > shrinker based slab reclaim. > > I'm buying into the problem of variable object lifetime sharing the > same slub. Well yeah I see the logic of the argument but what I have seen in practice is that the access to objects becomes rather random over time. inodes and denties are used by multiple underlying volumes/mountpoints etc. They are expired individually etc etc. The references to objects become garbled over time anyways. What I would be interested in is some means by which locality of objects of different caches can be explicitly specified. This would allow the placing together of multiple objects in the same page frame. F.e. dentries and inodes and other metadata of a filesystem that is related. This would enhance the locality of the data and allow better defragmentation. But we are talking here about a totally different allocator design. > With the SLAB bulk free API I'm introducing, we can speedup slub > slowpath, by free several objects with a single cmpxchg_double, BUT > these objects need to belong to the same page. > Thus, as Dave describe with merging, other users of the same size > objects might end up holding onto objects scattered across several > pages, which gives the bulk free less opportunities. This happens regardless as far as I can tell. On boot up you may end up for a time in special situations where that is true. > That would be a technical argument for introducing a SLAB_NO_MERGE flag > per slab. But I want to do some measurement before making any > decision. And it might be hard to show for my use-case of SKB free, > because SKB allocs will likely be dominating 256 bytes slab anyhow. With the skbs you would want to place the skb data together with the packet data and other network related objects right? Maybe we can think out an allocator that can store objects related to a specific action in a page frame that can then be tossed as a whole. -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qk0-f179.google.com (mail-qk0-f179.google.com [209.85.220.179]) by kanga.kvack.org (Postfix) with ESMTP id E75F46B0254 for ; Thu, 3 Sep 2015 23:26:22 -0400 (EDT) Received: by qkcf65 with SMTP id f65so3927278qkc.3 for ; Thu, 03 Sep 2015 20:26:22 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com. [209.132.183.28]) by mx.google.com with ESMTPS id b9si1348064qgb.45.2015.09.03.20.26.20 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 Sep 2015 20:26:21 -0700 (PDT) Date: Fri, 4 Sep 2015 13:26:07 +1000 From: Dave Chinner Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) Message-ID: <20150904032607.GX1933@devil.localdomain> References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Sender: owner-linux-mm@kvack.org List-ID: To: Linus Torvalds Cc: Mike Snitzer , Christoph Lameter , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm On Thu, Sep 03, 2015 at 08:02:40AM -0700, Linus Torvalds wrote: > On Wed, Sep 2, 2015 at 11:02 PM, Dave Chinner wrote: > > On Wed, Sep 02, 2015 at 06:21:02PM -0700, Linus Torvalds wrote: > > Right, it's not xyzzy-specific where 'xyzzy' is a subsystem. The > > flag application is actually *object specific*. That is, the use of > > the individual objects that determines whether it should be merged > > or not. > > Yes. > > I do agree that something like SLAB_NO_MERGE can make sense on an > actual object-specific level, if you have very specific allocation > pattern knowledge and can show that the merging actually hurts. There are generic cases where it hurts, so no justification should be needed for those cases... > > e.g. Slab fragmentation levels are affected more than anything by > > mixing objects with different life times in the same slab. i.e. if > > we free all the short lived objects from a page but there is one > > long lived object on the page then that page is pinned and we free > > no memory. Do that to enough pages in the slab, and we end up with a > > badly fragmented slab. > > The thing is, *if* you can show that kind of behavior for a particular > slab, and have numbers for it, then mark that slab as no-merge, and > document why you did it. The double standard is the problem here. No notification, proof, discussion or review was needed to turn on slab merging for everyone, but you're setting a very high bar to jump if anyone wants to turn it off in their code. > And quite frankly, I don't actually think you have the numbers to show > that theoretical bad behavior. I don't keep numbers close handy. I've been dealing with these problems for ten years, to I just know what workloads demonstrate this "theoretical bad behaviour" within specific slabs and test them when relevant. I'll do a couple of quick "merging is better" verification tests this afternoon, but other than that I don't have time in the next couple of weeks... But speaking of workloads, internal inode cache slab fragmentation is simple to reproduce on any filesystem. XFS just happens to be the only one that really actively manages it as a result of long term developer awareness of the problem. I first tripped over it in early 2005 with SpecSFS, and then with other similar NFS benchmarks like filebench. That's where Christoph Lameter was introduced to the problem, too: https://lwn.net/Articles/371892/ " The problem is that sparse use of objects in slab caches can cause large amounts of memory to become unusable. The first ideas to address this were developed in 2005 by various people." FYI, with appropriate manual "drop slab" hacks during the benchmark, we could get 20-25% higher throughput from the NFS server because dropping the entire slab cache before the measurement phase meant we avoided the slab fragmentation issue and had ~50% more free memory to use for the page cache during the measurement period... Similar problems have been reported over the years by users with backup programs or scripts that used find, rsync and/or 'cp -R' on large filesystems. It used to be easy to cause these sorts of problems in the XFS inode cache. There's quite a few other workloads, but it easily to reproduce inode slab fragmetnation with find, bulkstat and cp. Basically all you need to do is populate the inode cache, randomise the LRU order, then trigger combined inode cache and memory demand. It's that simple. The biggest problem with using a workload like this to "prove" that slab merging degrades behaviour is that we don't know what slabs have been merged. Hence it's extremely hard to generate a workload definition that demonstrates it. Indeed, change kernel config options, structures change size and the slab is merged with different objects, so the workload that generates problems has to be changed, too. And it doesn't even need to be a kernel with a different config - just a different set of modules loaded because the hardware and software config is different will change what slabs are merged. IOWs, what produces a problem on one kernel on one machine will not reproduce the same problem on a different kernel or machine. Numbers are a crapshoot here, especially as the cause of the problem is trivially easy to understand. Linus, you always say that at some point you've just got to step back, read the code and understand the underlying issue that is being dealt with because some things are way too complex to reproduce reliably. This is one of those cases - it's obvious that slab merging does not fix or prevent internal slab cache fragmentation and that it only serves to minimise the impact of fragmentation by amortising it across multiple similar slabs. Really, this is the best we can do with passive slab caches where you can't control freeing patterns. However, we also have actively managed slab caches, and they can and do work to prevent fragmetnation and clear it quickly when it happens. Merging these actively managed slabs with other passive slab is just a bad idea because the passive slab objects can only reduce the effectiveness of the active management algorithms. We don't need numbers to understand this - it's clear and obvious from an algorithmic point of view. > In contrast, there really *are* > numbers to show the advantages of merging. I have never denied that. Please listen to what I'm saying. > So the fragmentation argument has been shown to generally be in favor > of merging, _not_ in favor of that "no-merge" behavior. Yes, all the numbers and research I've seen has been on passive slab cache behaviour. I *agree* that passive slab caches should be merged, but I don't recall anyone documenting the behavioural distinction between active/passive slabs before now, even though it's been something I've had in my head for several years. Actively managed slabs are very different in their behaviour to passive slabs, and so what holds true for passive slabs is not necessarily true for actively managed slabs. Really, we don't need some stupidly high bar to jump over here - whether merging should be allowed can easily be answered with a simple question: "Does the slab have a shrinker or does it back a mempool?" If the answer is yes then using SLAB_SHRINKER or SLAB_MEMPOOL to trigger the no-merge case doesn't need any more justification from subsystem maintainers at all. Cheers, Dave. -- Dave Chinner dchinner@redhat.com -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io0-f180.google.com (mail-io0-f180.google.com [209.85.223.180]) by kanga.kvack.org (Postfix) with ESMTP id 964176B0254 for ; Thu, 3 Sep 2015 23:51:10 -0400 (EDT) Received: by ioiz6 with SMTP id z6so10535658ioi.2 for ; Thu, 03 Sep 2015 20:51:10 -0700 (PDT) Received: from mail-ig0-x22e.google.com (mail-ig0-x22e.google.com. [2607:f8b0:4001:c05::22e]) by mx.google.com with ESMTPS id l128si1062913ioe.149.2015.09.03.20.51.10 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 Sep 2015 20:51:10 -0700 (PDT) Received: by igbkq10 with SMTP id kq10so7997042igb.0 for ; Thu, 03 Sep 2015 20:51:10 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <20150904032607.GX1933@devil.localdomain> References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> <20150904032607.GX1933@devil.localdomain> Date: Thu, 3 Sep 2015 20:51:09 -0700 Message-ID: Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) From: Linus Torvalds Content-Type: text/plain; charset=UTF-8 Sender: owner-linux-mm@kvack.org List-ID: To: Dave Chinner Cc: Mike Snitzer , Christoph Lameter , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm On Thu, Sep 3, 2015 at 8:26 PM, Dave Chinner wrote: > > The double standard is the problem here. No notification, proof, > discussion or review was needed to turn on slab merging for > everyone, but you're setting a very high bar to jump if anyone wants > to turn it off in their code. Ehh. You realize that almost the only load that is actually seriously allocator-limited is networking? And slub was beating slab on that? And slub has been doing the merging since day one. Slab was just changed to try to keep up with the winning strategy. Really. You seem to think that this merging thing is new. It's really not. Where did you miss the part that it's been done since 2007? It's only new for slab, and the reason it was introduced for slab was that it was losing most relevant benchmarks to slub. So do you now want a "SLAB_NO_MERGE_IF_NOT_SLUB" flag, which keeps the traditional behavior for slab and slub? Just because its' traditional? One that says "if the allocator is slub, then merge, but if the allocator is slab, then don't merge". Really, Dave. You have absolutely nothing to back up your points with. Merging is *not* some kind of "new" thing that was silently enabled recently to take you by surprise. That seems to be your *only* argument: that the behavior changed behind your back. IT IS NOT TRUE. It's only true since you don't seem to realize that a large portion of the world moved on to SLUB a long time ago. Do you seriously believe that a "SLAB_NO_MERGE_IF_NOT_SLUB" flag is a good idea, just to justify your position of "let's keep the merging behavior the way it has been"? Or do you seriously think that it's a good idea to take the non-merging behavior from the allocator that was falling behind? So no. The switch to merging behavior was not some kind of "no discussion" thing. It was very much part of the whole original _point_ of SLUB. And the point of having allocator choices was to see which one worked best. SLUB essentially won. We could have just deleted SLAB. I don't think that would necessarily have been a bad idea. Instead, slab was taught to try to do some of the same things that worked for slub. At what point do you just admit that your arguments aren't holding water? So the fact remains: if you can actually show that not merging is a good idea for particular slabs, then that's real data. But right now you are just ignoring the real data and the SLUB we've had over the years. And if you continue to spout nonsense about "silent behavioral changes", the only thing you show is that you don't know what the hell you are talking about. So your claim of "double standard" is pure and utter shit. Get over it. Linus -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pa0-f53.google.com (mail-pa0-f53.google.com [209.85.220.53]) by kanga.kvack.org (Postfix) with ESMTP id 344496B0254 for ; Fri, 4 Sep 2015 02:34:50 -0400 (EDT) Received: by pacwi10 with SMTP id wi10so14895385pac.3 for ; Thu, 03 Sep 2015 23:34:49 -0700 (PDT) Received: from mail-pa0-x230.google.com (mail-pa0-x230.google.com. [2607:f8b0:400e:c03::230]) by mx.google.com with ESMTPS id cy1si2537247pad.200.2015.09.03.23.34.48 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 Sep 2015 23:34:49 -0700 (PDT) Received: by pacwi10 with SMTP id wi10so14894974pac.3 for ; Thu, 03 Sep 2015 23:34:48 -0700 (PDT) Date: Fri, 4 Sep 2015 15:35:28 +0900 From: Sergey Senozhatsky Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) Message-ID: <20150904063528.GA29320@swordfish> References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> <20150903122949.78ee3c94@redhat.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="UugvWAfsgieZRqgk" Content-Disposition: inline In-Reply-To: <20150903122949.78ee3c94@redhat.com> Sender: owner-linux-mm@kvack.org List-ID: To: Jesper Dangaard Brouer Cc: Dave Chinner , Linus Torvalds , Mike Snitzer , Christoph Lameter , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm , Sergey Senozhatsky --UugvWAfsgieZRqgk Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On (09/03/15 12:29), Jesper Dangaard Brouer wrote: [..] > I'm buying into the problem of variable object lifetime sharing the > same slub. > > With the SLAB bulk free API I'm introducing, we can speedup slub > slowpath, by free several objects with a single cmpxchg_double, BUT > these objects need to belong to the same page. > Thus, as Dave describe with merging, other users of the same size > objects might end up holding onto objects scattered across several > pages, which gives the bulk free less opportunities. > > That would be a technical argument for introducing a SLAB_NO_MERGE flag > per slab. But I want to do some measurement before making any > decision. And it might be hard to show for my use-case of SKB free, > because SKB allocs will likely be dominating 256 bytes slab anyhow. Out of curiosity, I did some quite simple-minded "slab_nomerge = 0" vs. "slab_nomerge = 1" tests today on my old x86_64 box (4gigs of RAM, ext4, 4.2.0-next-20150903): - git clone https://github.com/git/git; make -j8; package (archlinux); cleanup; - create a container; untar gcc-5-20150901.tar.bz2; make -j6; package; cleanup; I modified /proc/slabinfo to show a total `unused` space size, accounted in cache_show() (reset in slab_start()): __unused_objs_sz += (sinfo.num_objs - sinfo.active_objs) * s->size; and captured that value every second tail -1 /proc/slabinfo >> slab_unused FWIW, files with the numbers attached (+ gnuplot graph). Those numbers are not really representative, but well, they are what they are -- on my small x86_64 box with very limited resources and under pretty general tests "slab_nomerge = 1" shows better numbers. (hm... can embedded benefit from disabling merging?). I think (as Dave Chinner said), preventing active and passive slabs merging does not sound so crazy. Just my 2 cents. -ss --UugvWAfsgieZRqgk Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename=slab_unused_nomerge 101440 135360 135360 135360 135360 135360 118976 127168 127168 112832 156032 88448 129408 102784 102784 102784 102784 102784 98816 176640 176640 145920 137728 137728 129536 84480 143872 88256 78016 78016 78016 74048 74048 74048 74048 96576 96576 96576 96576 96576 96576 96576 153920 153920 102720 104768 93248 105536 80960 80960 66624 66624 66624 66624 66624 66624 138752 142848 130560 130560 130560 130560 124928 100352 100352 100352 69632 69632 53248 53248 53248 53248 53248 53248 69632 69632 69632 69632 100352 112640 98304 110592 95232 86016 66560 66560 44032 117760 117760 117760 87040 87040 82944 82944 82944 82944 118784 118784 118784 104448 104448 104448 104448 104448 104448 65536 49152 49152 49152 49152 124928 124928 77824 160768 160768 214016 150528 150528 121856 89088 89088 89088 160768 160768 142336 142336 142336 142336 107520 107520 109568 109568 109568 109568 109568 109568 109568 109568 109568 109568 109568 109568 109568 109568 111616 111616 91136 91136 91136 91136 91136 91136 91136 91136 91136 76800 76800 66560 95808 95808 95808 95808 159296 147008 147008 147008 196160 196160 196160 196160 196160 196160 163392 163392 163392 163392 134144 197312 216384 211456 213888 179136 204480 125952 205824 205824 183936 145728 203328 199296 183296 150016 128128 128128 130048 141568 231288 223392 204984 204984 217272 231736 163480 189576 153408 209024 205760 218760 177344 222400 191680 157248 227136 201088 240640 213912 203392 123904 146432 146432 146432 205312 122944 268800 256768 222944 272000 260480 288128 220608 224704 246056 137040 133120 154496 234496 276352 276352 318976 364224 300608 306688 254464 244352 173440 217664 227456 209408 185408 164480 149504 149504 179392 240768 235648 182336 152448 201152 238504 168976 226088 188896 141312 184000 181824 174912 155264 139968 186368 302848 341824 275376 260480 338816 288640 308840 245952 269120 255808 248416 248416 306008 291672 230616 201984 142000 187568 181248 194240 188416 143936 204672 217472 166080 104448 155392 139776 150016 208256 178496 178752 183488 104448 189568 164488 157200 122048 167872 176640 163712 196992 182848 100352 149248 141568 210432 194176 214784 213056 237824 210304 210304 260976 237808 386960 340816 321360 243760 209536 212272 192352 282208 198648 213816 245880 211896 244280 166392 293552 331616 328448 231680 362624 202752 202752 310592 348736 291456 199936 209536 217992 202816 284032 259392 259392 259392 215360 229440 229888 241152 161792 161792 204608 183336 195944 173432 173376 173376 159552 208960 178304 178304 133120 170432 207104 201536 198784 187712 250952 195688 150312 142864 142864 142864 187344 154800 143984 170352 203056 180448 168288 162944 151808 235008 226112 226112 186880 183936 133120 133120 133120 110592 98304 98304 81920 81920 81920 237568 276480 276480 276480 276480 276480 276480 276480 276480 260096 260096 260096 227328 227328 227328 266112 266112 266112 236224 236224 245312 226048 223616 223616 218624 181504 174848 170752 170752 170752 170752 170752 219904 285824 230848 208320 208320 208320 205504 205504 205504 194560 194560 194560 194560 194560 194560 194560 169984 169984 169984 159744 185856 181504 179328 179328 179328 169088 169088 150528 150528 150528 219584 219584 219584 178624 164416 162240 152000 224448 224576 219072 211712 206272 208256 271744 271744 271744 216320 216320 171008 171008 168192 168192 168192 168192 157952 155648 155648 146304 146304 144128 144128 144128 144128 207616 207616 207616 207616 207616 180864 180864 138560 138560 138624 138624 138624 122240 122240 98112 98112 98112 98112 85888 85888 85888 85888 81920 81920 81920 81920 168512 162752 162752 230336 197888 179328 179328 179328 164288 164288 164288 164288 164288 164288 160704 118784 101056 81920 81920 81920 81920 81920 221184 221184 221184 221184 221184 221184 190464 190464 225280 225280 225280 225280 227328 229376 194560 244008 245200 227000 265080 202832 172032 174080 214680 222944 196744 226312 221776 153936 181120 171520 118784 118784 118784 170752 118784 180928 184640 184640 205808 152488 142696 122480 118784 202880 177600 147456 147456 225536 181440 204800 128512 194688 90432 149184 147720 238464 161096 223752 220112 213296 183504 154320 211728 187152 162048 162048 162176 162176 158336 154560 154560 154560 118016 101056 89408 177472 173696 164672 169728 169728 169728 169728 166400 166400 144960 144960 131008 165632 141248 111808 177472 189120 170624 93760 161920 80256 165888 271296 259264 145280 233600 230592 230912 229056 232960 238592 247616 213120 206720 223872 190528 233280 228800 259008 219584 242752 221312 210432 232000 248512 246656 247808 236352 244224 205504 252032 255936 226112 213312 204160 171136 226560 281408 204032 262720 272576 273088 274560 271872 271936 273920 269888 274880 240704 224192 223168 211456 224960 204352 219520 178944 165248 169664 181440 152512 205760 190336 163392 205760 163264 237824 236992 231104 228416 213064 189320 285064 256456 270920 257728 186624 196224 185792 150976 169600 180224 159232 189952 225152 140544 197504 151552 175168 185536 165696 226624 209792 264576 249216 248640 254912 266368 249664 278720 249984 281472 251520 254912 203136 242816 239872 269120 189568 253120 197184 186624 203456 177600 346528 348216 334768 322416 334880 303776 305376 307232 340640 386784 372824 397976 360216 366040 406424 333528 324696 282840 303448 331032 349336 288536 285656 281816 231576 245144 216984 239576 310040 315736 323480 362968 233624 344856 347864 237336 320088 258136 335576 254040 363544 311064 357080 285976 296152 264664 306520 374232 364760 407832 407640 403544 368024 376600 405336 303576 397400 376664 334240 279968 375072 277920 375072 329312 378592 320864 337184 337504 293536 293280 285464 268480 259336 279752 299016 270280 276040 313480 265224 297288 290440 259464 273224 277320 238216 262728 241544 275272 274312 252488 179080 183176 220168 196168 195720 171592 210248 178376 200200 177984 192192 163584 203968 179328 157376 181568 166272 181632 182016 174592 179136 242432 231104 226112 227712 185088 210944 224640 180608 177536 192192 249856 267584 262784 270272 266688 247104 282944 266176 247296 340096 312256 310080 251520 272768 230784 230080 230080 230080 230080 230080 222016 222016 157568 214720 154368 236992 185664 214208 214080 214080 214080 201216 245240 206784 309848 306136 251736 354904 337688 364752 399200 228000 314848 244768 223968 260768 223968 213728 217568 266208 266208 251104 251104 247072 290432 241344 248784 190472 278408 247688 223944 223944 223944 205320 205320 205320 197128 193416 193416 183240 182344 163024 163024 163024 163024 188368 175504 175504 142992 106336 100192 100192 184104 93136 142088 121288 187592 172744 87816 150920 153224 256072 188104 209352 195144 221768 184520 175432 184832 118656 230528 228224 201792 109056 232640 187456 187456 181056 201216 247296 241728 241728 238144 148608 148608 148608 148608 148608 148608 251456 244416 148800 148608 202176 231680 158080 198144 175104 185408 158656 121152 111360 172480 117760 219072 276608 204544 223872 308032 215680 215936 201856 142464 142464 134272 226688 150528 147456 128640 169600 142336 64640 64640 161792 156672 134016 134016 130368 123840 179136 176768 176768 166208 168128 164224 163648 153856 174752 168200 227912 235208 216072 246600 146384 196496 171344 202000 160152 169560 236416 232384 141632 263424 266368 244800 244608 247808 244536 265848 174328 276032 216040 272864 246432 218520 306008 201480 262088 252232 205768 224968 212296 218440 185480 195408 198288 184416 182816 136576 184768 149056 193280 181056 184576 200064 202048 203968 218240 212992 218112 253824 252864 284992 191360 234944 242624 181248 172096 241984 178880 233344 227904 176448 241280 164928 258112 149952 160128 116288 199168 242816 289024 207936 297856 162048 178880 146240 142400 166144 104448 234944 219264 214528 141440 144640 138432 144832 168512 177088 174208 126272 142144 137984 147136 137856 132800 122112 127936 218752 223360 217920 192256 226624 205248 191296 224128 222464 199936 232128 223680 248448 217920 206144 230272 214528 197248 246784 202240 198656 185728 219520 193792 172928 198016 211584 174144 220032 209664 175552 169216 166848 152128 160768 108736 136576 212096 144000 247296 207232 235904 227328 216960 205440 253696 200512 339200 219648 260928 320768 260480 262912 249240 213328 244648 216488 267560 190296 177496 191272 173152 183856 153840 233008 252992 237232 244848 226304 235352 241672 211856 233488 189512 253480 209656 276856 230648 287288 220352 268480 148672 146560 203136 248064 142528 304640 256800 270816 262944 375808 240592 351464 290168 350200 267128 305656 185976 185976 171896 222528 165824 244288 209872 217616 215992 229048 172472 182264 173984 163744 171808 172064 153568 216096 243616 131832 195368 140272 136240 140656 101744 30568 30568 59240 59240 78312 134056 90344 90344 70696 59296 59296 119840 130520 95448 89112 152728 140312 138912 203584 136512 113536 111552 107840 86592 89536 83968 69504 139584 78848 120064 123072 100416 78848 78848 194176 48128 68608 116608 176832 115456 89728 116480 76544 63232 135680 169024 132544 157568 105856 115200 87744 104320 90752 86400 86144 79872 80128 50112 66432 81344 40128 45184 203840 127872 174016 222976 151424 106240 107328 79808 107200 87232 74432 70400 201984 89088 147264 196864 153984 110592 108992 100736 81664 81664 112064 112448 112448 112448 112448 115200 81152 124800 124800 68288 37888 105472 102848 190888 69832 138080 133616 150296 27968 144512 9216 69440 93760 50176 68480 116992 143464 160872 126248 152424 116200 142568 81552 229672 216528 138240 129920 120192 109632 149376 181968 161680 206336 201952 137920 190720 127952 223632 175672 171072 114648 232920 205592 184408 237720 282112 236736 304960 253824 258176 212224 205440 159872 147456 100928 100800 111232 88704 88704 62144 82176 64320 50176 50176 50176 76096 115904 128768 140096 44032 40576 63360 63808 49536 9216 80448 110400 153280 176320 152896 225408 160192 207040 200064 190400 178176 253952 292992 226560 226560 192512 189632 208000 183424 212096 156672 125952 125952 125952 197952 195904 225304 301272 196296 188648 233384 203752 182192 189872 125640 247312 269024 306304 306304 236608 274120 230408 219320 241176 197328 199248 233616 233616 199248 210256 203600 181424 207624 139720 139720 171960 157176 129872 172080 140816 162832 113848 90680 52472 101576 112776 65160 165320 165320 183944 216120 200464 141432 171032 160632 147576 189544 186712 195792 202128 206368 217704 177640 197384 136656 96520 121776 121776 121776 166120 166888 163624 137128 171112 166440 166440 139560 130344 144616 187304 183208 123000 121720 119504 122448 112592 99984 120912 175440 119376 174992 264144 182480 194448 193808 215184 229264 242192 225552 333328 207696 218064 181392 227280 188048 201808 165960 181512 145544 141656 152080 136912 139856 120592 94672 112016 125440 121984 126784 103488 113344 105664 63616 111176 162696 182152 149896 185152 155776 227712 158848 180224 70720 98752 91520 101760 41984 99648 152832 192768 123392 133888 65984 46208 151680 116928 103552 87424 168960 77888 75264 183488 103680 117888 168320 156288 158144 133568 88448 130432 130432 109696 113344 116992 111936 114240 130176 102720 98688 168632 157120 148928 169344 154368 129856 113472 128320 136064 71104 64768 212032 215552 207360 222088 193608 156808 163008 160376 121112 154832 149200 113136 208240 175664 218192 89672 210312 212608 168256 155552 163936 163936 112736 112736 116480 71424 60352 93952 77568 71296 91456 91456 83968 69696 85248 85248 71552 80320 100096 69760 92032 79488 70720 142784 160000 296192 177152 286080 302760 283752 260112 227104 276552 251976 251976 251976 251976 256200 256200 223496 223496 106640 142928 143056 143056 143184 156752 179792 179792 179792 179792 160336 139544 140080 177472 169800 148040 168984 160088 126376 150632 148264 153448 143208 135848 128936 124584 117664 207392 157472 152320 132480 91072 134016 129152 56320 56320 136704 180224 184000 219072 160984 262104 262104 240216 195096 213528 186520 167672 167672 135024 89712 116144 244976 240944 240944 206576 203272 245104 210656 290016 293472 301752 153784 246272 150592 222464 222720 188928 188928 188928 189056 189056 299776 275200 350848 337216 373440 339520 310976 310504 281392 254664 253768 253768 253768 253768 249736 249736 249736 216648 313128 298472 296424 282728 270600 270600 254216 254216 254216 254216 254216 254216 254216 236104 236104 236104 236104 236104 236104 236104 236104 236104 236104 236104 236104 236104 236104 236104 225864 225864 227912 227912 227912 227912 242512 229624 231040 227872 120448 211584 195200 205568 117056 113152 129344 235072 202496 109952 282144 98496 190656 118656 72640 51456 145344 190176 305672 226544 239552 98304 180608 159680 94976 139008 145160 257880 163120 130048 59008 115176 67688 144488 178752 87680 123584 197312 297152 382016 326016 244224 327424 328576 200448 280320 148352 148352 187008 251584 153152 255488 122112 277056 302656 303552 274880 274880 274880 274880 274880 274880 274880 274880 274880 274880 274880 274880 274880 275008 275008 275008 336448 336448 336448 336448 336448 336448 336448 336448 311872 293440 293440 293440 293440 293440 275520 206400 256768 202304 180672 218560 271360 258048 229504 227008 227008 229056 229056 265792 265792 265792 265792 206400 206400 206400 206400 157568 151424 151424 151424 151424 151424 151424 186752 186752 186752 186752 186752 186752 186752 208320 166720 124608 124608 126784 174720 251264 237952 258688 274176 306432 182528 197888 125568 181376 181376 150336 185024 185024 198976 168256 132096 196992 116032 205248 253696 269504 348544 435904 411328 411328 411456 343872 343872 343872 343872 343872 343872 343872 335552 335552 335680 335680 335680 335680 335680 335680 335680 335808 332096 332096 332096 332096 332096 332096 332096 332096 270080 265280 255040 255040 255040 255040 255040 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 244800 134208 166080 141312 108544 108544 108544 108928 108928 108928 108928 108928 108928 219520 219520 219520 219520 219520 219520 219520 219520 219520 219520 219520 219520 219520 219520 219520 219520 215872 216256 228544 228544 228544 228544 224704 226496 189632 189632 191808 202688 202688 203264 254656 251072 238784 242112 242112 242112 195776 195776 185536 144576 144576 158912 158912 158912 134336 158912 158912 201920 191680 193728 203968 283200 252288 217600 188928 188928 147968 225792 225792 188928 172544 172544 221184 221184 221184 221184 221184 154816 154816 154816 154816 154816 154816 154816 154816 154816 154816 154816 154816 146624 146624 146624 146624 146624 146624 146624 146624 146624 200640 --UugvWAfsgieZRqgk Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename=slab_unused_merge 321152 368448 357056 399552 371072 367104 367104 364800 364800 360256 346304 364480 395328 397632 390400 390400 390400 390400 390400 390400 390400 390400 390400 345088 352192 379328 388032 383040 350528 316352 341440 361664 347840 343744 343744 343744 367680 339776 344384 344384 339776 339776 375616 374208 341952 349248 357440 346432 342400 348800 351872 366208 352640 345984 290432 290944 293504 286080 279424 279424 295552 285056 279424 279424 279424 279424 279424 279424 302976 295168 295168 295168 288768 332544 332544 321536 306944 313856 318720 346368 318464 319488 326144 318464 282112 291584 281344 297216 293376 292352 291584 276736 280064 265216 281088 281088 289536 261120 307712 278784 262912 263424 275968 281344 279040 265216 265216 284416 282368 269248 291520 286656 259520 271552 266816 253504 250432 250432 235712 235712 235712 257472 235712 252608 247744 277440 273600 276928 276928 248512 273088 273088 258240 254272 256320 256320 254464 231424 231424 229120 226560 224256 224256 219904 244480 244480 258048 264448 264448 260608 260608 260608 260608 260608 257536 257536 235008 251392 233216 248320 244992 239360 262912 239360 243968 259072 271872 246144 248960 246912 261248 255616 246144 240512 185984 170368 126976 126976 166144 188544 146432 126976 130688 126976 155392 184832 168064 155008 184960 184960 184960 185216 185216 262208 262464 262720 272000 273024 497280 460096 374144 360576 352768 383168 393472 355136 291264 297920 275264 333120 338688 323072 271104 271104 271104 271360 271360 271360 271360 271360 271360 271360 271360 271360 259392 310784 259392 270976 259392 387328 437120 413312 458112 435264 432896 252032 252032 278784 278784 245504 295680 301952 295680 317440 430784 490688 488128 457408 472128 462080 529216 502656 468992 505792 351936 339136 313600 359616 335360 443008 457856 422336 471616 421696 487360 511104 530624 527488 522432 497408 506240 490752 496512 482304 498048 454016 484224 439360 525760 538048 472960 513088 493888 508224 200064 200064 284544 200064 282496 322496 340800 346176 291520 408960 371392 448448 425728 375168 477120 458752 528768 525056 503296 469568 437632 497984 535296 557504 471104 318080 312512 305856 342464 385280 318400 381504 342016 288448 219584 213696 269888 237056 235904 387520 258560 286208 293952 367680 346944 361984 324736 305216 314240 402816 422400 423168 384576 169408 339328 305024 338368 356352 275520 266752 212672 209024 282944 286848 255168 290432 228224 200832 322240 379520 395200 285568 359872 359808 274240 334784 290496 252416 336832 353920 353472 312704 368256 302208 316416 298112 318336 309760 304128 278272 379584 324864 234496 283008 221824 221760 236800 220160 414016 436096 399744 370944 245056 244480 311360 347264 276864 249920 250112 321088 213888 182912 303872 352320 339008 345280 370176 245504 232192 252608 275520 266880 258624 244224 231936 176064 236672 198848 206336 183616 209152 229504 258048 258240 243264 243264 231552 235840 239104 277568 242688 237696 314176 316416 316672 332544 368512 300544 286592 268864 268352 268352 282112 267264 262528 251072 263936 355968 324544 370880 371008 335872 439040 449792 440768 390848 407488 377920 402752 435904 373056 424448 350784 368000 370368 401920 361216 310080 460032 464128 451008 451008 451008 451008 452672 445248 445248 445248 444096 441024 443456 435776 207360 201472 246720 246720 246720 316992 321664 319744 316288 310464 292992 291328 308928 305088 305088 366784 366784 366784 243776 243776 280256 280256 280256 280256 280256 280256 280256 280256 251520 256256 249024 219072 245504 236800 258496 234368 292544 223808 265408 253312 244480 256832 230400 190272 180416 175040 116096 233216 197696 198528 198528 176704 171008 154240 182080 182080 247232 223232 234304 234304 297472 251328 251328 251328 243136 243136 273472 470272 314816 314944 281664 293760 409024 507712 508480 478080 527232 527232 529280 614720 508224 601536 495488 538816 339200 309696 989952 303744 303744 303744 303744 396096 398144 398144 364800 481664 356224 281984 255296 277888 215232 234304 241088 217792 245312 321536 322752 319936 342080 338368 352704 408128 464128 399808 504704 426368 92416 515712 616256 511552 556992 459456 60928 1958400 130560 2141120 189312 264704 651200 398656 470848 396544 431360 423616 375360 359680 384000 350272 400832 356736 354432 348800 271552 324288 321856 311616 350656 381312 322112 346624 352512 345216 313216 174272 256960 278208 266112 272384 350912 324352 399168 404416 350336 384768 366336 372288 367488 321408 365888 415872 392256 380032 408064 335232 298816 297408 267456 336960 339904 344192 371584 325120 382464 376896 399872 423936 370048 428352 372352 394432 332608 385152 380672 351104 367552 408832 430080 395264 437248 268032 296576 239872 285312 286464 310912 286656 311104 356416 381952 346944 327808 429888 432640 425600 419392 418816 444032 274368 287744 351424 368768 386880 398400 374016 365120 365120 382592 288512 310400 339136 349696 353536 374272 359360 381056 363072 355328 338176 323136 349696 262336 354432 344512 350592 318912 259008 311040 301184 317760 324416 354048 334912 346176 330560 341888 318848 323264 322816 323520 322304 305856 277376 305024 324544 324096 343232 334976 353088 336896 324736 346368 321856 327616 348416 341056 359936 345408 369408 364288 352960 336192 361408 348672 347392 279168 310400 156096 280960 248256 373440 300416 377856 343616 272320 350912 337152 355584 334144 325376 311424 345984 318080 354432 324736 348352 327616 316288 295872 283584 283520 277952 282112 302592 322368 290240 281984 268032 298816 356800 465344 488000 466816 436416 445440 445952 429440 465792 408064 459392 369088 454784 413632 445888 514688 478016 496192 434560 345600 411392 387584 370688 236608 427328 377856 425728 419136 365504 385856 392128 448256 449984 456448 456512 450944 384512 392960 381504 358784 342848 369408 372544 376320 349120 416832 353408 390528 433024 474112 464320 426048 437248 399488 417280 421120 416384 421184 421824 426240 493824 453504 390528 391616 393984 424000 395712 433088 449984 419008 379328 346880 481600 463680 499264 439424 412928 471936 471744 460096 364672 411456 393728 443584 396992 442816 446912 446912 388800 444352 351488 432576 371840 399552 365376 445888 462336 470016 397952 444032 449152 306752 377024 310464 370752 352768 442176 434176 337152 402560 447104 453376 413120 393920 324352 295680 275968 352256 150016 178688 370688 346112 159232 263488 444736 458624 454592 226624 246848 226688 296320 229632 255936 371392 333888 300736 270016 280512 327104 285504 301888 298688 282944 281216 295872 311616 345664 303744 308992 275840 278272 221760 248768 237696 214464 174144 192960 226880 226176 265728 201920 146816 213376 167360 157632 111488 168448 259712 276096 262400 347648 269632 402560 461696 384384 394688 369472 306560 299136 308160 277184 242880 441216 419712 441152 383872 421824 481792 396480 395392 501440 539264 381696 396864 346688 344448 288832 326272 380096 363776 373248 297024 318016 319424 262912 260352 318144 315200 315200 345088 345472 345728 346112 346112 241152 240000 249472 324800 220672 349568 308352 465536 506752 531392 477952 404608 521728 363520 404928 445504 359104 394432 284736 354176 359680 344576 338752 492288 420928 426368 393984 340288 387904 351936 289792 283776 305536 306304 331072 393728 401024 434176 336448 373184 420800 430336 417792 341312 370176 364416 366656 354368 302592 268160 346688 333248 347200 302208 311360 326720 347968 377152 373312 381760 363136 347648 351488 386624 410688 415104 453504 512576 488832 449600 455680 488512 375104 396416 382528 374656 308352 406784 387712 417024 385472 370432 371264 417152 396032 359872 326912 349696 343232 346944 342784 334272 335616 374720 366784 380032 420672 410944 424384 401280 448576 364864 457024 414912 413376 391744 391360 341376 338432 365056 355776 395968 330624 376960 386944 401088 403648 404160 405952 279232 387328 380160 360576 393664 372608 385024 350336 379520 367424 375744 385280 364864 371584 363392 359360 385472 361792 378176 353856 342016 326016 328832 348032 278592 354432 343232 348160 298496 336704 262976 301632 307584 330240 335744 360064 363392 332288 365312 327232 342656 337920 315264 323904 326080 322944 318784 322496 283776 287168 280576 266624 258176 320256 320896 323712 313472 318080 319040 322816 242752 298880 310912 309056 291776 299520 312448 290176 317568 311040 287104 302272 273920 308608 275392 247488 286656 234688 201920 195008 193728 178752 207104 273280 281408 302976 347072 318912 311680 358720 399616 363968 326528 361408 340672 364096 344384 327360 309888 283328 315648 283200 312256 353792 352192 358592 326464 319872 309696 325312 326336 348032 359168 363584 365120 293312 330368 295488 361408 356608 337984 300288 338816 269376 324672 309760 255040 347648 249088 285568 346496 376960 325120 381248 300480 362752 369984 400768 368640 368448 275392 368000 363648 377856 290240 336192 312064 353344 313280 240704 241472 241472 181312 222976 252672 266496 260160 238144 238144 202304 197952 197952 197952 197952 251520 259968 271872 293440 286208 291328 282176 281152 261376 261376 257280 257280 298432 298432 283136 299520 299520 299520 299520 327936 315392 315392 315392 308544 283648 256256 234560 230464 248128 242368 239808 239808 239808 240000 386496 367168 446528 431360 374720 392576 403456 367616 302592 319936 367680 371776 334848 338240 328192 317632 326912 375104 349248 311808 266432 258240 295680 253760 331904 266752 359936 334528 411904 481408 486976 432384 432384 491584 422080 326400 392000 344384 322496 324352 318848 336960 328832 306560 269568 311936 371584 379328 351360 377536 373888 385920 472000 450688 433536 446400 387584 430848 355584 358144 344256 424704 377664 438272 444992 460992 426048 426304 412352 384768 374208 384064 386496 383424 410304 406720 427776 413760 351680 449600 436480 437248 438720 421440 423232 325888 390848 417280 440704 381952 411392 393216 488256 397504 390912 346176 288896 278464 265792 363392 381376 345792 364544 366592 366400 313792 366080 340800 386496 366464 392000 410368 433664 433728 446080 423616 464192 435840 425088 448320 429184 377536 407552 322944 400320 354880 358848 353984 315008 377216 319808 329280 272320 341056 308800 294976 287040 374336 339712 278912 279872 276416 285056 256000 318336 401984 422656 379072 396800 355200 431424 425664 416064 413632 426304 363392 364992 345856 379776 368704 340928 283648 236736 313920 377792 358400 381376 381504 395008 397440 390144 363456 363456 460672 426624 418112 379136 375616 347776 311616 341824 400512 431168 391872 406528 388736 402112 392640 490496 459520 492416 449472 491392 440832 424000 450048 379712 416192 324608 448896 336576 425088 385920 385920 379264 372096 346304 275712 309632 305856 307328 320000 345472 346496 362368 362368 335104 363968 391424 368768 353344 301312 329536 313408 310208 354176 374400 371328 404672 299712 405184 445312 382848 369472 416576 425280 397376 414912 411776 415296 409408 426816 327872 367744 356032 329408 378048 360512 313920 388032 397888 406016 385792 422336 376384 320000 285376 376256 296320 334080 332288 328832 275520 283264 278656 385984 385984 266432 370304 334272 356352 403136 388160 381760 351680 349376 349248 320960 261952 389504 315328 311488 385408 302976 282560 297728 257088 309824 173952 351424 414336 414400 371648 285440 329088 284480 306752 329984 373760 376064 428032 411264 464448 460864 480256 504384 500992 491392 408896 406848 388224 399488 362240 401536 390720 339200 345344 247808 370752 381824 435328 463168 388032 410816 401600 397952 327744 333696 378432 349952 367552 468992 427200 454720 389632 484416 393664 504448 378304 503616 367936 472448 447680 432128 413696 420672 422592 509952 697152 701760 685696 735168 706880 654400 680384 659200 553216 557760 578048 624640 609472 621760 586688 618944 534208 609792 538752 508032 629120 530432 579072 535360 568640 608768 483648 624000 632000 600704 596672 584768 554240 589376 588224 519040 557248 614016 617088 589888 608192 608192 626688 628672 621120 589120 607872 684736 706496 682240 683200 631296 651456 627840 667648 656768 692416 607680 707072 572800 683648 540608 358208 513856 567104 580480 476608 318784 648960 628608 634624 679360 658304 461824 808512 758208 758208 768192 520960 542336 483200 663424 744064 739072 637184 760320 773120 672384 793728 691456 783360 742400 720128 683328 748992 660416 540352 506816 543808 552704 541248 481728 506816 548160 511552 542016 506304 510976 511232 452736 471488 467328 511744 485120 456576 435648 542912 651136 559936 595648 637504 596224 492352 554496 535232 497984 569152 562112 539264 556672 492480 376960 427968 429760 435648 497408 519168 502976 334272 463680 279616 404352 491776 486912 434624 508096 519488 474816 462272 503808 480768 468736 468736 529728 487872 487872 490240 490752 510080 449856 570112 582848 492096 479552 499648 536960 536960 536960 629440 658432 578368 549056 564736 524992 509440 540608 530688 526912 511936 503552 475456 470400 440768 431744 402304 393984 401152 416640 446720 448896 398208 483776 464320 376256 479040 370816 369792 466752 466432 368128 324480 390208 383040 447744 488064 367104 465920 297984 387392 291648 356352 450304 453760 458048 468544 370496 587264 589312 566400 584576 573248 663872 647360 644480 558784 507584 582656 611776 521984 439040 573312 596608 530176 465856 525184 505152 458048 396928 439104 667264 437440 493888 613632 597952 413056 590208 543104 374848 530432 491200 598400 607104 590784 548672 572352 572352 572352 491264 484096 582400 582400 582400 582400 582400 668096 613568 613568 613568 613568 629376 629376 629376 629376 629504 543680 539840 539840 533376 525312 568192 569536 569536 529856 539264 507136 381824 516672 395968 477056 434752 447360 455040 474752 474752 451264 449472 449472 449472 394944 333568 369472 348928 311360 346816 364032 177088 314368 390784 343552 338112 335680 332288 332288 332288 373824 373824 373824 373824 416960 430784 419264 407680 427392 408832 366976 438080 406400 357120 292736 281536 333888 360704 336064 423296 222848 250304 426688 429248 382464 362432 347392 453184 536704 398976 376256 443072 395008 396288 368704 393408 399872 366784 381376 415744 366336 346048 349632 329216 344384 283712 281600 205632 295552 345664 343488 304576 364864 361984 375040 344448 371840 356352 344192 367424 324352 295552 286400 281600 281600 281600 278080 278080 278080 278080 278080 235968 279936 278080 243520 244352 244352 244352 375360 370752 368448 368448 374208 374208 323904 376256 220736 247104 222016 222016 222464 220672 282560 262784 262784 241664 241664 290432 290432 290432 291264 286272 286272 280192 280192 329856 274624 275712 355072 288704 288704 288704 272448 260160 260160 206016 206272 197760 204416 204416 272768 283968 280064 336896 336896 336896 306688 306688 321728 316480 309184 309184 300608 300608 300608 298560 279168 279808 279808 267136 264832 166720 117568 117568 117568 230080 279040 307008 313152 311936 316288 380352 381824 342912 342912 395200 321088 305856 305856 305856 306048 309888 395776 398016 395008 353920 353920 322048 354624 354624 404928 401856 376320 376320 376320 368384 368384 368384 336192 314368 311104 311104 311104 302080 293888 322176 322304 313984 313984 313984 313984 287104 285568 285568 283072 315072 315072 339648 339648 339648 339648 331904 308800 308800 584640 563136 573440 537408 537408 526400 526400 523840 523840 523840 523840 523840 523840 523840 523840 520768 520768 520768 520768 520768 496128 496128 496128 557248 557248 557248 554304 548928 570944 570944 570944 570944 570944 570944 570944 568256 565952 561984 559104 555648 551296 551296 551296 551296 621888 --UugvWAfsgieZRqgk Content-Type: image/png Content-Disposition: attachment; filename="merge_vs_nomerge.png" Content-Transfer-Encoding: base64 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 Ek0nOAKvAAAAAElFTkSuQmCC --UugvWAfsgieZRqgk-- -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ig0-f182.google.com (mail-ig0-f182.google.com [209.85.213.182]) by kanga.kvack.org (Postfix) with ESMTP id 7E3536B0254 for ; Fri, 4 Sep 2015 03:01:42 -0400 (EDT) Received: by igbut12 with SMTP id ut12so6632277igb.1 for ; Fri, 04 Sep 2015 00:01:42 -0700 (PDT) Received: from mail-io0-x22f.google.com (mail-io0-x22f.google.com. [2607:f8b0:4001:c06::22f]) by mx.google.com with ESMTPS id j9si1609530ige.71.2015.09.04.00.01.41 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 Sep 2015 00:01:41 -0700 (PDT) Received: by ioii196 with SMTP id i196so13903239ioi.3 for ; Fri, 04 Sep 2015 00:01:41 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <20150904063528.GA29320@swordfish> References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> <20150903122949.78ee3c94@redhat.com> <20150904063528.GA29320@swordfish> Date: Fri, 4 Sep 2015 00:01:41 -0700 Message-ID: Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) From: Linus Torvalds Content-Type: text/plain; charset=UTF-8 Sender: owner-linux-mm@kvack.org List-ID: To: Sergey Senozhatsky Cc: Jesper Dangaard Brouer , Dave Chinner , Mike Snitzer , Christoph Lameter , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm , Sergey Senozhatsky On Thu, Sep 3, 2015 at 11:35 PM, Sergey Senozhatsky wrote: > > Out of curiosity, I did some quite simple-minded > "slab_nomerge = 0" vs. "slab_nomerge = 1" tests today on my old > x86_64 box (4gigs of RAM, ext4, 4.2.0-next-20150903): So out of interest, was this slab or slub? Also, how repeatable is this? The memory usage between two boots tends to be rather fragile - some of the bigger slab users are dentries and inodes, and various filesystem scanning events will end up skewing things a _lot_. But if it turns out that the numbers are pretty stable, and sharing really doesn't save memory, then that is certainly a big failure. I think Christoph did much of his work for bigger machines where one of the SLAB issues was the NUMA overhead, and who knows - maybe it worked well for the load and machine in question, but not necessarily elsewhere. Interesting. Linus -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io0-f178.google.com (mail-io0-f178.google.com [209.85.223.178]) by kanga.kvack.org (Postfix) with ESMTP id 61D2E6B0254 for ; Fri, 4 Sep 2015 03:59:06 -0400 (EDT) Received: by iofb144 with SMTP id b144so15313033iof.1 for ; Fri, 04 Sep 2015 00:59:06 -0700 (PDT) Received: from mail-pa0-x236.google.com (mail-pa0-x236.google.com. [2607:f8b0:400e:c03::236]) by mx.google.com with ESMTPS id cn8si2926838pdb.218.2015.09.04.00.59.05 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 Sep 2015 00:59:05 -0700 (PDT) Received: by padhy16 with SMTP id hy16so14760473pad.1 for ; Fri, 04 Sep 2015 00:59:05 -0700 (PDT) Date: Fri, 4 Sep 2015 16:59:45 +0900 From: Sergey Senozhatsky Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) Message-ID: <20150904075945.GA31503@swordfish> References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> <20150903122949.78ee3c94@redhat.com> <20150904063528.GA29320@swordfish> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="vkogqOf2sHV7VnPd" Content-Disposition: inline In-Reply-To: Sender: owner-linux-mm@kvack.org List-ID: To: Linus Torvalds Cc: Sergey Senozhatsky , Jesper Dangaard Brouer , Dave Chinner , Mike Snitzer , Christoph Lameter , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm , Sergey Senozhatsky --vkogqOf2sHV7VnPd Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On (09/04/15 00:01), Linus Torvalds wrote: > On Thu, Sep 3, 2015 at 11:35 PM, Sergey Senozhatsky > wrote: > > > > Out of curiosity, I did some quite simple-minded > > "slab_nomerge = 0" vs. "slab_nomerge = 1" tests today on my old > > x86_64 box (4gigs of RAM, ext4, 4.2.0-next-20150903): > > So out of interest, was this slab or slub? Also, how repeatable is > this? The memory usage between two boots tends to be rather fragile - > some of the bigger slab users are dentries and inodes, and various > filesystem scanning events will end up skewing things a _lot_. > > But if it turns out that the numbers are pretty stable, and sharing > really doesn't save memory, then that is certainly a big failure. I > think Christoph did much of his work for bigger machines where one of > the SLAB issues was the NUMA overhead, and who knows - maybe it worked > well for the load and machine in question, but not necessarily > elsewhere. > > Interesting. > grep SLAB .config # CONFIG_SLAB is not set CONFIG_SLABINFO=y grep SLUB .config CONFIG_SLUB_DEBUG=y CONFIG_SLUB=y CONFIG_SLUB_CPU_PARTIAL=y # CONFIG_SLUB_DEBUG_ON is not set # CONFIG_SLUB_STATS is not set The numbers are stable on my box. Did another round of tests. Please find attached (hope attachments are OK): -- git clone glibc; make -j8; package; clean up It differs on both busy and idle systems. I was a bit surprised to see 0 unused memory .. 33472 56128 56128 0 0 0 0 0 0 0 0 0 0 0 59392 59392 59392 .. But I went through the corresponding slabinfo (I track slabinfo too); and yes, zero unused objects. slabinfo - version: 2.1 # name : tunables : slabdata ext4_groupinfo_1k 36 36 224 18 1 : tunables 0 0 0 : slabdata 2 2 0 ext4_groupinfo_4k 7412 7412 232 17 1 : tunables 0 0 0 : slabdata 436 436 0 sda2 117 117 104 39 1 : tunables 0 0 0 : slabdata 3 3 0 sd_ext_cdb 128 128 32 128 1 : tunables 0 0 0 : slabdata 1 1 0 scsi_sense_cache 224 224 128 32 1 : tunables 0 0 0 : slabdata 7 7 0 scsi_cmd_cache 166 234 448 18 2 : tunables 0 0 0 : slabdata 13 13 0 sgpool-128 16 16 4096 8 8 : tunables 0 0 0 : slabdata 2 2 0 sgpool-64 48 48 2048 16 8 : tunables 0 0 0 : slabdata 3 3 0 sgpool-32 64 64 1024 16 4 : tunables 0 0 0 : slabdata 4 4 0 sgpool-16 64 64 512 16 2 : tunables 0 0 0 : slabdata 4 4 0 sgpool-8 176 176 256 16 1 : tunables 0 0 0 : slabdata 11 11 0 scsi_data_buffer 0 0 24 170 1 : tunables 0 0 0 : slabdata 0 0 0 ip6-frags 0 0 280 29 2 : tunables 0 0 0 : slabdata 0 0 0 fib6_nodes 128 128 64 64 1 : tunables 0 0 0 : slabdata 2 2 0 ip6_dst_cache 42 42 384 21 2 : tunables 0 0 0 : slabdata 2 2 0 PINGv6 0 0 1472 22 8 : tunables 0 0 0 : slabdata 0 0 0 RAWv6 22 22 1472 22 8 : tunables 0 0 0 : slabdata 1 1 0 UDPLITEv6 0 0 1472 22 8 : tunables 0 0 0 : slabdata 0 0 0 UDPv6 44 44 1472 22 8 : tunables 0 0 0 : slabdata 2 2 0 tw_sock_TCPv6 0 0 272 30 2 : tunables 0 0 0 : slabdata 0 0 0 request_sock_TCPv6 0 0 312 26 2 : tunables 0 0 0 : slabdata 0 0 0 TCPv6 0 0 2752 11 8 : tunables 0 0 0 : slabdata 0 0 0 bsg_cmd 0 0 312 26 2 : tunables 0 0 0 : slabdata 0 0 0 mqueue_inode_cache 25 25 1280 25 8 : tunables 0 0 0 : slabdata 1 1 0 hugetlbfs_inode_cache 18 18 872 18 4 : tunables 0 0 0 : slabdata 1 1 0 jbd2_transaction_s 100 100 320 25 2 : tunables 0 0 0 : slabdata 4 4 0 jbd2_inode 340 340 48 85 1 : tunables 0 0 0 : slabdata 4 4 0 jbd2_journal_handle 204 204 80 51 1 : tunables 0 0 0 : slabdata 4 4 0 jbd2_journal_head 136 136 120 34 1 : tunables 0 0 0 : slabdata 4 4 0 jbd2_revoke_table_s 1024 1024 16 256 1 : tunables 0 0 0 : slabdata 4 4 0 jbd2_revoke_record_s 128 128 32 128 1 : tunables 0 0 0 : slabdata 1 1 0 ext4_inode_cache 2178 2178 1744 18 8 : tunables 0 0 0 : slabdata 121 121 0 ext4_free_data 192 192 64 64 1 : tunables 0 0 0 : slabdata 3 3 0 ext4_allocation_context 64 64 128 32 1 : tunables 0 0 0 : slabdata 2 2 0 ext4_prealloc_space 52 52 152 26 1 : tunables 0 0 0 : slabdata 2 2 0 ext4_system_zone 816 816 40 102 1 : tunables 0 0 0 : slabdata 8 8 0 ext4_io_end 224 224 72 56 1 : tunables 0 0 0 : slabdata 4 4 0 ext4_extent_status 3876 3876 40 102 1 : tunables 0 0 0 : slabdata 38 38 0 kioctx 0 0 896 18 4 : tunables 0 0 0 : slabdata 0 0 0 aio_kiocb 0 0 128 32 1 : tunables 0 0 0 : slabdata 0 0 0 dio 0 0 704 23 4 : tunables 0 0 0 : slabdata 0 0 0 fasync_cache 42 42 96 42 1 : tunables 0 0 0 : slabdata 1 1 0 pid_namespace 0 0 2256 14 8 : tunables 0 0 0 : slabdata 0 0 0 posix_timers_cache 0 0 264 31 2 : tunables 0 0 0 : slabdata 0 0 0 UNIX 110 110 1472 22 8 : tunables 0 0 0 : slabdata 5 5 0 ip4-frags 0 0 264 31 2 : tunables 0 0 0 : slabdata 0 0 0 ip_mrt_cache 0 0 192 21 1 : tunables 0 0 0 : slabdata 0 0 0 UDP-Lite 0 0 1344 24 8 : tunables 0 0 0 : slabdata 0 0 0 tcp_bind_bucket 64 64 64 64 1 : tunables 0 0 0 : slabdata 1 1 0 inet_peer_cache 0 0 192 21 1 : tunables 0 0 0 : slabdata 0 0 0 ip_fib_trie 340 340 48 85 1 : tunables 0 0 0 : slabdata 4 4 0 ip_fib_alias 292 292 56 73 1 : tunables 0 0 0 : slabdata 4 4 0 ip_dst_cache 64 64 256 16 1 : tunables 0 0 0 : slabdata 4 4 0 PING 0 0 1280 25 8 : tunables 0 0 0 : slabdata 0 0 0 RAW 25 25 1280 25 8 : tunables 0 0 0 : slabdata 1 1 0 UDP 96 96 1344 24 8 : tunables 0 0 0 : slabdata 4 4 0 tw_sock_TCP 0 0 272 30 2 : tunables 0 0 0 : slabdata 0 0 0 request_sock_TCP 0 0 312 26 2 : tunables 0 0 0 : slabdata 0 0 0 TCP 12 12 2560 12 8 : tunables 0 0 0 : slabdata 1 1 0 eventpoll_pwq 224 224 72 56 1 : tunables 0 0 0 : slabdata 4 4 0 eventpoll_epi 192 192 128 32 1 : tunables 0 0 0 : slabdata 6 6 0 inotify_inode_mark 120 120 136 30 1 : tunables 0 0 0 : slabdata 4 4 0 blkdev_queue 22 22 2816 11 8 : tunables 0 0 0 : slabdata 2 2 0 blkdev_requests 322 322 344 23 2 : tunables 0 0 0 : slabdata 14 14 0 blkdev_ioc 88 88 184 22 1 : tunables 0 0 0 : slabdata 4 4 0 bio-0 315 315 192 21 1 : tunables 0 0 0 : slabdata 15 15 0 biovec-256 56 96 4096 8 8 : tunables 0 0 0 : slabdata 12 12 0 biovec-128 16 16 2048 16 8 : tunables 0 0 0 : slabdata 1 1 0 biovec-64 64 64 1024 16 4 : tunables 0 0 0 : slabdata 4 4 0 biovec-16 64 64 256 16 1 : tunables 0 0 0 : slabdata 4 4 0 uid_cache 64 64 128 32 1 : tunables 0 0 0 : slabdata 2 2 0 sock_inode_cache 153 153 960 17 4 : tunables 0 0 0 : slabdata 9 9 0 skbuff_fclone_cache 90 90 448 18 2 : tunables 0 0 0 : slabdata 5 5 0 skbuff_head_cache 320 320 256 16 1 : tunables 0 0 0 : slabdata 20 20 0 configfs_dir_cache 0 0 96 42 1 : tunables 0 0 0 : slabdata 0 0 0 file_lock_cache 64 64 256 16 1 : tunables 0 0 0 : slabdata 4 4 0 file_lock_ctx 156 156 104 39 1 : tunables 0 0 0 : slabdata 4 4 0 net_namespace 0 0 4480 7 8 : tunables 0 0 0 : slabdata 0 0 0 shmem_inode_cache 1023 1023 1048 31 8 : tunables 0 0 0 : slabdata 33 33 0 pool_workqueue 64 64 256 16 1 : tunables 0 0 0 : slabdata 4 4 0 proc_inode_cache 1309 1309 928 17 4 : tunables 0 0 0 : slabdata 77 77 0 sigqueue 100 100 160 25 1 : tunables 0 0 0 : slabdata 4 4 0 bdev_cache 96 96 1344 24 8 : tunables 0 0 0 : slabdata 4 4 0 kernfs_node_cache 17836 17836 152 26 1 : tunables 0 0 0 : slabdata 686 686 0 mnt_cache 108 108 448 18 2 : tunables 0 0 0 : slabdata 6 6 0 filp 1757 1998 448 18 2 : tunables 0 0 0 : slabdata 111 111 0 inode_cache 9234 9234 872 18 4 : tunables 0 0 0 : slabdata 513 513 0 dentry 15036 15036 288 28 2 : tunables 0 0 0 : slabdata 537 537 0 names_cache 32 32 4096 8 8 : tunables 0 0 0 : slabdata 4 4 0 buffer_head 11427 11427 104 39 1 : tunables 0 0 0 : slabdata 293 293 0 nsproxy 170 170 48 85 1 : tunables 0 0 0 : slabdata 2 2 0 vm_area_struct 4462 4462 176 23 1 : tunables 0 0 0 : slabdata 194 194 0 mm_struct 112 112 1152 28 8 : tunables 0 0 0 : slabdata 4 4 0 fs_cache 105 105 192 21 1 : tunables 0 0 0 : slabdata 5 5 0 files_cache 95 95 832 19 4 : tunables 0 0 0 : slabdata 5 5 0 signal_cache 225 225 1280 25 8 : tunables 0 0 0 : slabdata 9 9 0 sighand_cache 182 182 2240 14 8 : tunables 0 0 0 : slabdata 13 13 0 task_struct 187 192 4928 6 8 : tunables 0 0 0 : slabdata 32 32 0 cred_jar 2179 2368 128 32 1 : tunables 0 0 0 : slabdata 74 74 0 Acpi-Operand 1680 1680 72 56 1 : tunables 0 0 0 : slabdata 30 30 0 Acpi-ParseExt 204 204 80 51 1 : tunables 0 0 0 : slabdata 4 4 0 Acpi-Parse 292 292 56 73 1 : tunables 0 0 0 : slabdata 4 4 0 Acpi-State 204 204 80 51 1 : tunables 0 0 0 : slabdata 4 4 0 Acpi-Namespace 1122 1122 40 102 1 : tunables 0 0 0 : slabdata 11 11 0 anon_vma_chain 4096 4096 64 64 1 : tunables 0 0 0 : slabdata 64 64 0 anon_vma 2472 2472 168 24 1 : tunables 0 0 0 : slabdata 103 103 0 pid 256 256 128 32 1 : tunables 0 0 0 : slabdata 8 8 0 radix_tree_node 2016 2016 584 28 4 : tunables 0 0 0 : slabdata 72 72 0 trace_event_file 1058 1058 88 46 1 : tunables 0 0 0 : slabdata 23 23 0 ftrace_event_field 2550 2550 48 85 1 : tunables 0 0 0 : slabdata 30 30 0 idr_layer_cache 300 300 2096 15 8 : tunables 0 0 0 : slabdata 20 20 0 page->ptl 2117 2117 56 73 1 : tunables 0 0 0 : slabdata 29 29 0 dma-kmalloc-8192 0 0 8192 4 8 : tunables 0 0 0 : slabdata 0 0 0 dma-kmalloc-4096 0 0 4096 8 8 : tunables 0 0 0 : slabdata 0 0 0 dma-kmalloc-2048 0 0 2048 16 8 : tunables 0 0 0 : slabdata 0 0 0 dma-kmalloc-1024 0 0 1024 16 4 : tunables 0 0 0 : slabdata 0 0 0 dma-kmalloc-512 0 0 512 16 2 : tunables 0 0 0 : slabdata 0 0 0 dma-kmalloc-256 0 0 256 16 1 : tunables 0 0 0 : slabdata 0 0 0 dma-kmalloc-128 0 0 128 32 1 : tunables 0 0 0 : slabdata 0 0 0 dma-kmalloc-64 0 0 64 64 1 : tunables 0 0 0 : slabdata 0 0 0 dma-kmalloc-32 0 0 32 128 1 : tunables 0 0 0 : slabdata 0 0 0 dma-kmalloc-16 0 0 16 256 1 : tunables 0 0 0 : slabdata 0 0 0 dma-kmalloc-8 0 0 8 512 1 : tunables 0 0 0 : slabdata 0 0 0 dma-kmalloc-192 0 0 192 21 1 : tunables 0 0 0 : slabdata 0 0 0 dma-kmalloc-96 0 0 96 42 1 : tunables 0 0 0 : slabdata 0 0 0 kmalloc-8192 44 44 8192 4 8 : tunables 0 0 0 : slabdata 11 11 0 kmalloc-4096 200 200 4096 8 8 : tunables 0 0 0 : slabdata 25 25 0 kmalloc-2048 816 816 2048 16 8 : tunables 0 0 0 : slabdata 51 51 0 kmalloc-1024 672 672 1024 16 4 : tunables 0 0 0 : slabdata 42 42 0 kmalloc-512 544 544 512 16 2 : tunables 0 0 0 : slabdata 34 34 0 kmalloc-256 1344 1344 256 16 1 : tunables 0 0 0 : slabdata 84 84 0 kmalloc-192 903 903 192 21 1 : tunables 0 0 0 : slabdata 43 43 0 kmalloc-128 3168 3168 128 32 1 : tunables 0 0 0 : slabdata 99 99 0 kmalloc-96 1092 1092 96 42 1 : tunables 0 0 0 : slabdata 26 26 0 kmalloc-64 7424 7424 64 64 1 : tunables 0 0 0 : slabdata 116 116 0 kmalloc-32 1792 1792 32 128 1 : tunables 0 0 0 : slabdata 14 14 0 kmalloc-16 3584 3584 16 256 1 : tunables 0 0 0 : slabdata 14 14 0 kmalloc-8 5120 5120 8 512 1 : tunables 0 0 0 : slabdata 10 10 0 kmem_cache_node 224 224 128 32 1 : tunables 0 0 0 : slabdata 7 7 0 kmem_cache 189 189 192 21 1 : tunables 0 0 0 : slabdata 9 9 0 -ss --vkogqOf2sHV7VnPd Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename=slab_glibc_nomerge 46016 90688 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 33472 33472 56128 56128 0 0 0 0 0 0 0 0 0 0 0 59392 59392 59392 43008 43008 43008 26624 26624 26624 26624 7168 7168 61440 61440 61440 57344 49152 29696 47104 47104 47104 19456 77824 77824 77824 77824 45056 45056 45056 45056 45056 45056 63488 63488 19456 19456 19456 19456 19456 19456 19456 47104 47104 19456 19456 19456 19456 19456 19456 19456 19456 19456 19456 3072 3072 3072 3072 3072 3072 3072 3072 3072 3072 3072 3072 3072 3072 3072 3072 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 67584 63488 63488 121280 121280 125120 90112 114368 63488 105728 142720 159488 155584 158400 195200 117952 208768 70272 72704 89664 134336 80512 109120 109120 109120 54016 30720 30720 67072 134912 134912 132928 132928 132928 117120 117120 74240 48576 115648 53248 173056 122496 129152 69440 127808 107456 51392 100544 50944 110976 103040 46336 56704 153216 91520 161472 161472 139264 167872 81920 96704 96704 96704 96704 96704 96704 96704 96704 142976 142976 142976 81920 122176 122176 139712 172480 170176 168192 143872 143872 168256 143552 188864 188864 188864 99328 81920 151616 81920 94016 94016 94016 94016 94016 94016 94016 157248 81920 150144 198464 174784 136640 121216 92608 153856 174144 174144 174144 127296 127296 127296 121792 121792 121792 121792 113280 113280 113280 113280 113280 113280 113280 113280 113280 113280 113280 113280 109504 109504 109504 109504 74176 111936 66560 125440 124352 128064 74368 123136 68160 118912 118912 135616 59904 139904 136320 188544 188544 169088 169088 76352 104128 102208 133440 109824 114560 101184 120064 114432 119936 108352 104128 177088 97984 112128 120320 106944 187328 85952 74624 74496 122944 112704 122816 48512 40448 40448 102720 104448 149824 101504 91008 245632 192384 206144 206592 173696 195648 113152 156416 106368 262144 186304 155712 114880 183296 107328 102592 161728 153728 80064 124672 110528 116288 141888 95104 40448 153920 138240 40448 40448 40448 40448 40448 168064 175488 115712 112768 94272 52672 103680 87040 122944 100416 36352 79360 79360 79360 83328 112192 112192 112192 112192 89088 86144 96896 94656 36352 114624 115712 106496 96128 96128 96128 72064 72064 72064 40064 40064 36352 36352 36352 134912 125248 56384 37504 36352 36352 36352 36352 36352 36352 36352 36352 82240 71616 59776 36352 36352 36352 38656 36352 103232 88896 36352 59840 36352 133440 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 91968 91968 91968 92096 92096 92096 92096 92096 92096 92096 92096 92096 92096 92096 92096 92096 92096 92096 92096 92096 92096 92096 92096 80640 36352 55936 78912 36352 74112 36352 135744 167808 193088 157120 157120 125376 174784 232128 232128 222144 206912 206912 206912 206912 198976 178816 154880 154880 167680 208128 151296 139520 113792 80640 76032 76032 76032 76032 76032 76032 76032 62592 62592 62592 62592 62592 62592 62592 62592 58624 48384 73856 73856 73856 73088 40832 40832 40832 40832 40832 40832 40832 40832 40832 40832 40832 40832 40832 36352 36352 36352 36352 36352 36352 36352 36352 64320 36352 36352 36352 36352 36352 36352 --vkogqOf2sHV7VnPd Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename=slab_glibc_merge 180032 119360 106176 200640 193472 156864 156864 156864 181440 181440 169152 169152 122048 179136 179392 203200 232832 232832 302848 303360 303872 304384 308608 326656 354240 327744 334272 347456 375808 326592 308672 304960 344768 324352 318464 340736 340736 351488 340736 340736 336768 356736 352640 336768 353856 352576 346560 343488 337600 340928 359616 340672 337600 340416 355008 360640 341504 365568 331456 353152 353600 330496 366464 358784 371072 318336 318336 304256 330880 327552 296832 295040 295040 297088 312192 298624 304256 296320 411392 431104 414720 416512 421888 429312 422656 411392 394240 415744 361728 366848 356864 372480 372480 390656 378624 382208 371968 381440 364544 364288 318336 318336 307328 307328 378688 358016 365824 372352 367488 346752 359168 339520 351168 334656 341568 330816 327488 335936 410368 388608 379648 373120 375680 426752 358464 409216 396864 417216 364480 433472 410240 472000 436800 373440 398080 398080 398080 398080 361984 361984 381184 381440 381440 381824 373632 457728 427968 436160 422016 463680 412096 416768 382976 347264 380416 332928 349568 285760 302912 248128 342720 338624 338624 335360 331456 331712 325184 302272 303104 303104 303104 329856 327424 483968 391232 368320 445312 395456 421376 344320 269824 256576 313600 304896 366464 355264 362112 456000 398208 526272 497280 518144 507200 511040 425536 349248 357824 389376 391616 372416 365760 422784 449664 538560 492992 537408 528192 524608 409280 468608 434304 398272 397568 468928 412160 381184 412224 372096 375296 390656 316352 307264 371648 486720 403776 400064 365120 389760 490944 355200 447168 428416 439680 501056 595200 591872 541312 549120 554048 646080 545344 572288 527872 561344 601472 595520 593728 665984 557248 683584 607808 553920 612032 603392 523264 589888 469504 690816 777728 677312 562240 407488 429440 500992 478592 405760 427456 534016 369472 369216 468352 396672 443392 418432 477504 445632 382720 282816 279424 303808 273408 250176 304256 277632 283136 297472 256320 244096 219328 267584 281216 259456 284160 341824 333248 315392 283008 263360 313280 401728 329344 291200 428032 284800 384960 371904 303232 342400 271168 292992 297408 363008 366336 401920 426176 362944 315840 337792 298752 306560 332352 323968 243520 329088 338432 310336 322112 319872 263552 395520 290240 278592 314304 254592 388416 342208 504640 501568 389248 430528 506112 465984 413952 474624 456896 377344 298048 308736 376768 381184 378432 406080 387840 401408 394560 299200 338880 293952 256576 282368 247872 276224 292032 360576 305920 364160 323584 416448 307904 289856 367040 322048 341120 397888 331072 306688 340928 319872 319872 328960 388352 382336 428224 380480 366720 313792 285120 321024 298304 285120 239168 388288 454464 430336 427904 520704 472576 525312 487296 591296 541760 523968 523072 548096 453056 509504 524800 499520 484992 440000 444160 440576 439360 420224 369344 372608 372608 372608 372608 372608 372608 372608 372608 372608 372608 356224 356224 356224 356224 356224 411584 399296 399488 399488 377472 541312 525760 525760 525760 525760 462784 462784 437248 431872 477120 563968 562048 559296 556224 547520 565888 582336 563968 552320 552320 543680 604928 601920 654720 633792 624704 575168 562112 545088 559872 594880 577024 585600 568128 559104 614400 576256 485504 529408 529408 524672 505664 497664 497664 495488 495488 483520 452032 454656 451136 451136 510592 514048 514048 514048 532032 487104 463040 426176 426176 426176 426176 403392 403392 401472 368832 368832 368832 404800 404800 404800 422336 422336 422336 422336 390400 361920 362048 359360 392704 390336 387968 388672 388672 426112 352704 356672 356800 356800 356800 357248 357248 357248 357248 357248 357248 357248 405952 405952 405952 405952 405952 444032 444032 442880 --vkogqOf2sHV7VnPd Content-Type: image/png Content-Disposition: attachment; filename="glibc-merge_vs_nomerge.png" Content-Transfer-Encoding: base64 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 AAAAAADwaP8AafqPjrL0bFkAAAAASUVORK5CYII= --vkogqOf2sHV7VnPd-- -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qg0-f46.google.com (mail-qg0-f46.google.com [209.85.192.46]) by kanga.kvack.org (Postfix) with ESMTP id 4CA7A6B0254 for ; Fri, 4 Sep 2015 05:10:52 -0400 (EDT) Received: by qgx61 with SMTP id 61so11060691qgx.3 for ; Fri, 04 Sep 2015 02:10:52 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com. [209.132.183.28]) by mx.google.com with ESMTPS id 138si2106454qhs.81.2015.09.04.02.10.51 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 Sep 2015 02:10:51 -0700 (PDT) Date: Fri, 4 Sep 2015 11:10:38 +0200 From: Jesper Dangaard Brouer Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) Message-ID: <20150904111038.4a428b03@redhat.com> In-Reply-To: References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> <20150903122949.78ee3c94@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-linux-mm@kvack.org List-ID: To: Christoph Lameter Cc: Dave Chinner , Linus Torvalds , Mike Snitzer , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm , brouer@redhat.com On Thu, 3 Sep 2015 11:19:53 -0500 (CDT) Christoph Lameter wrote: > On Thu, 3 Sep 2015, Jesper Dangaard Brouer wrote: > > > I'm buying into the problem of variable object lifetime sharing the > > same slub. > [...] > > > With the SLAB bulk free API I'm introducing, we can speedup slub > > slowpath, by free several objects with a single cmpxchg_double, BUT > > these objects need to belong to the same page. > > Thus, as Dave describe with merging, other users of the same size > > objects might end up holding onto objects scattered across several > > pages, which gives the bulk free less opportunities. > > This happens regardless as far as I can tell. On boot up you may end up > for a time in special situations where that is true. That is true, which is also why below measurements should be taken with a grain of salt, as benchmarking is done within 10 min of boot up. > > That would be a technical argument for introducing a SLAB_NO_MERGE flag > > per slab. But I want to do some measurement before making any > > decision. And it might be hard to show for my use-case of SKB free, > > because SKB allocs will likely be dominating 256 bytes slab anyhow. I'll give you some preliminary measurements on my patchset which uses the new SLAB bulk free API of SKBs in the TX completion on ixgbe NIC driver (function ixgbe_clean_tx_irq() will bulk free max 32 SKBs). Basic test-type is IPv4 forwarding, on a single CPU (i7-4790K CPU @ 4.00GHz), with generator pktgen sending 14Mpps (using script samples/pktgen/pktgen_sample03_burst_single_flow.sh). Test setup notes * Kernel: 4.1.0-mmotm-2015-08-24-16-12+ #261 SMP - with patches "detached freelist" and Christophs irqon/off fix. Config /etc/sysctl.conf :: net/ipv4/conf/default/rp_filter = 0 net/ipv4/conf/all/rp_filter = 0 # Forwarding performance is affected by early demux net/ipv4/ip_early_demux = 0 net.ipv4.ip_forward = 1 Setup:: $ base_device_setup.sh ixgbe3 $ base_device_setup.sh ixgbe4 $ netfilter_unload_modules.sh ; netfilter_unload_modules.sh; rmmod nf_reject_ipv4 $ ip neigh add 172.16.0.66 dev ixgbe4 lladdr 00:aa:aa:aa:aa:aa # GRO negatively affect forwarding performance (as least for UDP test) $ ethtool -K ixgbe4 gro off tso off gso off $ ethtool -K ixgbe3 gro off tso off gso off First I tested a none patched kernel with/without "slab_nomerge". (Single CPU IP-forwarding of UDP packets) * Normal : 2049166 pps * slab_nomerge: 2053440 pps * Diff: +4274pps and -1.02ns * Nanosec diff show we are below accuracy of system Thus, results are the same. Using bulking changes the picture: Bulk free of max 32 SKBs in ixgbe TX-DMA-completion: * Bulk-free32: 2091218 pps * Diff to "Normal" case above: +42052 pps and 9.81ns * Nanosec diff is significant (enough above accuracy level of system) * Summary: Pretty nice improvement! Same test with "slab_nomerge": * slab_nomerge: 2121703 pps * Diff to above: +30485 pps and -6.87 ns * Nanosec diff were upto 3ns in testrun, this 6ns is still valid * Summary: slab_nomerge did make a difference! Total improvement is quite significant: +72537 pps and -16.68ns (+3.5%) It is important to be critical about your own measurements. What is the real cause of this change. Lets see that happens if we tune SLUB per CPU structures to have more "room", instead of using "slab_nomerge". Tuning:: echo 256 > /sys/kernel/slab/skbuff_head_cache/cpu_partial echo 9 > /sys/kernel/slab/skbuff_head_cache/min_partial Test with bulk-free32 and SLUB-tuning: * slub-tuned: 2110842 pps * Note this gets very close to "slab_nomerge" - 2121703 - 2110842 = 10861 pps - (1/2121703*10^9)-(1/2110842*10^9) = -2.42 ns * Nanosec diff around 2.5ns is not significant enough, call results the same Thus, I could achieve the same performance results by tuning SLUB as I could with "slab_nomerge". Maybe the advantage from "slab_nomerge" was just that I got my "own" per CPU structures, and this implicitly larger per CPU memory for myself? -- Best regards, Jesper Dangaard Brouer MSc.CS, Sr. Network Kernel Developer at Red Hat Author of http://www.iptv-analyzer.org LinkedIn: http://www.linkedin.com/in/brouer -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pa0-f54.google.com (mail-pa0-f54.google.com [209.85.220.54]) by kanga.kvack.org (Postfix) with ESMTP id 2D9676B0254 for ; Fri, 4 Sep 2015 05:56:18 -0400 (EDT) Received: by pacfv12 with SMTP id fv12so20321036pac.2 for ; Fri, 04 Sep 2015 02:56:17 -0700 (PDT) Received: from mail-pa0-x233.google.com (mail-pa0-x233.google.com. [2607:f8b0:400e:c03::233]) by mx.google.com with ESMTPS id dl4si3445325pbc.167.2015.09.04.02.56.17 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 Sep 2015 02:56:17 -0700 (PDT) Received: by pacwi10 with SMTP id wi10so19984098pac.3 for ; Fri, 04 Sep 2015 02:56:17 -0700 (PDT) Date: Fri, 4 Sep 2015 18:56:56 +0900 From: Sergey Senozhatsky Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) Message-ID: <20150904095656.GA408@swordfish> References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> <20150903122949.78ee3c94@redhat.com> <20150904063528.GA29320@swordfish> <20150904075945.GA31503@swordfish> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="pf9I7BMVVzbSWLtt" Content-Disposition: inline In-Reply-To: <20150904075945.GA31503@swordfish> Sender: owner-linux-mm@kvack.org List-ID: To: Linus Torvalds Cc: Jesper Dangaard Brouer , Dave Chinner , Mike Snitzer , Christoph Lameter , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm , Sergey Senozhatsky , Sergey Senozhatsky --pf9I7BMVVzbSWLtt Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On (09/04/15 16:59), Sergey Senozhatsky wrote: > > It differs on both busy and idle systems. > 1) IDLE system right after reboot and 2) under `desktop machine` load (ssh, firefox, vim, etc.). So yes, the behaviour seems to be stable on my box. Only gnuplot graphs attached this time (let me know if files with the numbers are of any interest). -ss --pf9I7BMVVzbSWLtt Content-Type: image/png Content-Disposition: attachment; filename="idle-merge_vs_nomerge.png" Content-Transfer-Encoding: base64 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 ul8UF1su/1eypScXQgtT+4cJFIBs3SuLlcsAr0mr9t9UJ/XxB01VNeu/w1ejB8OBtAIFgBFu CQDMIq3afztocpp+0LUjowfDobQCBQAAviWt2r+ptpveoVVZV9W6rnd/NrejB8MbaQUKAAB8 S1q1f1dtLkZt1Q/rw42d69GD4a20AuU5spYlacuRrOVI1nIka1mSthyllbXrDmVTdf03TbUd jh4MR371N86XL5O1LElbjmQtR7KWI1nLkrTlKKmstdXV6Wyr4zYChw7mevRgeCupQHmSrGVJ 2nIkazmStRzJWpakLUdJZW3XoNRNVXXbfvOAvxev1fvm53r0YHgrqUB5kqxlSdpyJGs5krUc yVqWpC1HSWVt/be52mY/7E4vXmurqh2MHgxvJRUoT5K1LElbjmQtR7KWI1nLkrTlKKmsbauq qdt20/WNyvkdOvvx9ejB8FZSgfIkWcuStOVI1nIkazmStSxJW46Sytpmu+m/6Q4bQWtywpO1 LElbjmQtR7KWI1nLkrTlKM2s1YfdAy5fgjYcPRjeqgAAgBi+2au8rX9jTXPeTKAbjh4MAQAA UtI3ORfbQjfD0YMhAADA8uquO76dpr8dM+uHgQIAAPxcd7oL0x06lfa4m0D/9Xr0YAgAAJCA 9d8W0v0tnfX+A3P2w+Z29GAIAACQgNOngXbHuzHNcdiOjB4MAQAAElBvu6pq1n+NymbXunTr 8dGDIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8JJNU1XN eumz4Enrpqu6bXsayl4+2q46fSttWai3nmz52RwukfV5KGtp21bn76+zJXcJu0zbdVkibem6 zNreuSopN2u7wPa69vFDWdxuRfaOa1H2MrJL1vk7aUvf+vhkO9bLspaFY5qq7dVQ1pLVVue6 6zpbcpewi7QNyhJpS9flk+3gryopN2u7v8fXdb37s1n6THjC7mKybtu6ORZespeRbXW6nEhb Fja7Qrk+PNkO131Zy8J2n6a23n3Z7Ieylrr2/I8/g2zJXcIu03Zdlkhbui6zdvBXlZSbtfb4 V0H998+VJGxzSlNzWIqyl5FNdbqcSFseuuM/TPZfZS0PXZ+m3V/aLpHpa9fN33VxmC25S9Z1 2q7LEmlL1XXWDv6qkoKztqm6/pvmdHefhG1PbXZ9WJmyl49dxjbH64u0ZeEvTfV2s5K1TLTH +24ukVnY9K+R+RtdZkvuknWdtuuyRNpSdZ21vXNVUnDWtqc3d/zFSMKaU7pWh7/KZS8bbVdt Ti+HlbYs/KVpMJS1pJ3+JXJ9SJOspa3dqS+q5ctsyV2yrtN2XZZIW6qus7a6qkoKztrp3v6q Hr4fiQTV9fFdYX26ZC8b+78HTk2OtGVh/xfAtqua455BspaHXXOzaVftun/5hayl7/xe6Ots yV3Szmm7LkukLWVXGw9cVCUFZ607vQDv7y4/OejvKcpeLrbHFysfBtKWhao67a622Q9lLROy lpnLJucyW3KXtJt9uo5libSl7DJrl1VJwVk7v8uouNAK1jb9Rn+yl4nNIV+n64u0ZWG/nea6 bjfH3dVkLQ/t9rLJkbX0neuu62zJXdJumpxjWSJtKbvI2lVVUnDWCg6tWPu/xfvNzGUvD3Wf Hk1OVi4+raNZyVom2m7/crVDa7rPl6ylT5OTpUGT81eWSFvKLl5keFWVFJy1y5tUy54JT1qf PwpU9vJwfL3r2MvVljolHjrtIL3726BbyVom1uddgvatqaylb/zlanKXuOusnMsSaUvZzRvg Rl6utsR5fVFzfrtRaXsqlKnuqmp76rRlLwttdaGRtkw0169SlrUsDN5AK2vpO5dV19mSu6Rd VsOXZYm0pewva4OqpOCsXWwcV9wHnZao/nsNzZ7sZWHY5EhbFrbXTY6sZWHwsgtZS9+5Wr7O ltwl7aLJuSpLpC1l95qcgrNW8EcAlWi3MC/TJHt5aHv7F8G2rbRlYn39yQGyloXBnRxZS9+5 WvZhoBk5p+26LJG2lF1k7aoqKThr7fEfvtrzP4CRrvV1ly17WTldX6QtC397aXaHy76sZWF7 +jfl/mPYZS19V9XyRbbkLmnntF2XJdKWsts98foflJy1w2emtZuuuHtURaqq7eZkP5a9nPxd X6QtC9uq2m8h3R3/jUvWcnDYXa1u6+PuarKWvou66zpbcpeyy03xrsoSaUvYvSan6Kw1/Yvy usK2jSvS1csoDwmTvYxcvsFW2jJwSlN9PZS1lO3fA33+nBxZS99l3XWdLblL2Pi7O/apkrZ0 3W1yis7a/hMFuvXSZ8ET6psmR/Yycvk5XNKWgz5N7fVwyRPiCZumq7qtrOXiqu66zpbcpesv bbdlibQl636TI2sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADA17VVtfQpAAAA zEeTAwAAFEWTAwAAFEWTAwAAFEWTAwAALGzTdFXX1Jej7Wm0WndV1axPg6aqunXbD3bNTLvd P/Y4Pg6OTc71LwUAAPiZXeNysB0ZtV0/6trLQd+6VNXpB4dxffwP14cm5/rXAAAA/My26jZt W2/7XuU4ao7tSXcY7vqW5jCo1m276fqWZ9fkNPt2Z9MfPByt6/W+sxn+UgAAgN/pjn1IU633 t2P6Bma1PrQn6+Nw18i0s/6InAAAAclJREFU+z8Oj2yr6vDytWr/w/5g/x8cRvXhx1e/FAAA 4Ie6anP42rbt/g7M+u/H24seZX/PZnt67dm6v3Vz7HX2bc3h8ceHbvsm5+KXAgAA/NCuKdlu Tq1IV9Vtb1t157s8B82xcTl2NavTS9H6nQb+Xph2uOtz9UsBAAB+aXvYTGC72X9fXej27ctF o/LX8Rx/fDp4aHLOD60P313+UgAAgJ9q10133EHtssmpBh95U73S5Fz+UgAAgJ9r193N69PO fczhvTW3L1e7aHIGL1e7+qUAAAA/tD5uGND276XZHH9cb+qLjQf2Gwncbjxw2eQ0VxsPXP1S AACAH+qObcjh/szm9Pqy3WjzcAvpyyZnuIX0xS8FAAD4of5zO/ef8bm/UXP4SM92/5me+9eZ tf2HgW7+Pgx0c/VhoJdNTnv6MNCuvyN0+UsBAAB+Z9+d9LuptZejpr8v040c6/p331w3OYdb OHuHjQeufykAAMAv7fdB65rN36i6GB32DmhOnxC6G1Td+ti3DJqcVbvdPXTbHn9+/UsBAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKNr/6jxgaOYe DI4AAAAASUVORK5CYII= --pf9I7BMVVzbSWLtt Content-Type: image/png Content-Disposition: attachment; filename="desktop-merge_vs_nomerge.png" Content-Transfer-Encoding: base64 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 --pf9I7BMVVzbSWLtt-- -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ig0-f174.google.com (mail-ig0-f174.google.com [209.85.213.174]) by kanga.kvack.org (Postfix) with ESMTP id D29486B0254 for ; Fri, 4 Sep 2015 09:55:27 -0400 (EDT) Received: by igbkq10 with SMTP id kq10so16979250igb.0 for ; Fri, 04 Sep 2015 06:55:27 -0700 (PDT) Received: from resqmta-po-12v.sys.comcast.net (resqmta-po-12v.sys.comcast.net. [2001:558:fe16:19:96:114:154:171]) by mx.google.com with ESMTPS id g184si2370804ioe.134.2015.09.04.06.55.26 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Fri, 04 Sep 2015 06:55:26 -0700 (PDT) Date: Fri, 4 Sep 2015 08:55:25 -0500 (CDT) From: Christoph Lameter Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) In-Reply-To: <20150904032607.GX1933@devil.localdomain> Message-ID: References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> <20150904032607.GX1933@devil.localdomain> Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-linux-mm@kvack.org List-ID: To: Dave Chinner Cc: Linus Torvalds , Mike Snitzer , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm On Fri, 4 Sep 2015, Dave Chinner wrote: > There are generic cases where it hurts, so no justification should > be needed for those cases... Inodes and dentries have constructors. These slabs are not mergeable and will never be because they have cache specific code to be executed on the object. > Really, we don't need some stupidly high bar to jump over here - > whether merging should be allowed can easily be answered with a > simple question: "Does the slab have a shrinker or does it back a > mempool?" If the answer is yes then using SLAB_SHRINKER or > SLAB_MEMPOOL to trigger the no-merge case doesn't need any more > justification from subsystem maintainers at all. The slab shrinkers do not use mergeable slab caches. -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qg0-f45.google.com (mail-qg0-f45.google.com [209.85.192.45]) by kanga.kvack.org (Postfix) with ESMTP id C96E46B0254 for ; Fri, 4 Sep 2015 10:05:10 -0400 (EDT) Received: by qgez77 with SMTP id z77so16531257qge.1 for ; Fri, 04 Sep 2015 07:05:10 -0700 (PDT) Received: from resqmta-ch2-12v.sys.comcast.net (resqmta-ch2-12v.sys.comcast.net. [2001:558:fe21:29:69:252:207:44]) by mx.google.com with ESMTPS id i67si2861416qhc.98.2015.09.04.07.05.08 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Fri, 04 Sep 2015 07:05:09 -0700 (PDT) Date: Fri, 4 Sep 2015 09:05:07 -0500 (CDT) From: Christoph Lameter Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) In-Reply-To: <20150904075945.GA31503@swordfish> Message-ID: References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> <20150903122949.78ee3c94@redhat.com> <20150904063528.GA29320@swordfish> <20150904075945.GA31503@swordfish> Content-Type: MULTIPART/Mixed; BOUNDARY=vkogqOf2sHV7VnPd Content-ID: Content-Disposition: INLINE Sender: owner-linux-mm@kvack.org List-ID: To: Sergey Senozhatsky Cc: Linus Torvalds , Jesper Dangaard Brouer , Dave Chinner , Mike Snitzer , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm , Sergey Senozhatsky This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --vkogqOf2sHV7VnPd Content-Type: TEXT/PLAIN; CHARSET=US-ASCII Content-ID: Content-Disposition: INLINE On Fri, 4 Sep 2015, Sergey Senozhatsky wrote: > But I went through the corresponding slabinfo (I track slabinfo too); and yes, > zero unused objects. Please use the slabinfo tool. What you see in /proc/slabinfo is generated for slab compatibility and may not show useful numbers. Run gcc -o slabinfo tools/vm/slabinfo.c slabinfo -T to get an overview of the fragmentation etc state of the slab caches. Run slabinfo to get individual cache statistics It would be helpful to compare the output with and without merging. --vkogqOf2sHV7VnPd Content-Type: TEXT/PLAIN; CHARSET=us-ascii Content-ID: Content-Description: Content-Disposition: ATTACHMENT; FILENAME=slab_glibc_nomerge 46016 90688 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 36608 33472 33472 56128 56128 0 0 0 0 0 0 0 0 0 0 0 59392 59392 59392 43008 43008 43008 26624 26624 26624 26624 7168 7168 61440 61440 61440 57344 49152 29696 47104 47104 47104 19456 77824 77824 77824 77824 45056 45056 45056 45056 45056 45056 63488 63488 19456 19456 19456 19456 19456 19456 19456 47104 47104 19456 19456 19456 19456 19456 19456 19456 19456 19456 19456 3072 3072 3072 3072 3072 3072 3072 3072 3072 3072 3072 3072 3072 3072 3072 3072 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 63488 67584 63488 63488 121280 121280 125120 90112 114368 63488 105728 142720 159488 155584 158400 195200 117952 208768 70272 72704 89664 134336 80512 109120 109120 109120 54016 30720 30720 67072 134912 134912 132928 132928 132928 117120 117120 74240 48576 115648 53248 173056 122496 129152 69440 127808 107456 51392 100544 50944 110976 103040 46336 56704 153216 91520 161472 161472 139264 167872 81920 96704 96704 96704 96704 96704 96704 96704 96704 142976 142976 142976 81920 122176 122176 139712 172480 170176 168192 143872 143872 168256 143552 188864 188864 188864 99328 81920 151616 81920 94016 94016 94016 94016 94016 94016 94016 157248 81920 150144 198464 174784 136640 121216 92608 153856 174144 174144 174144 127296 127296 127296 121792 121792 121792 121792 113280 113280 113280 113280 113280 113280 113280 113280 113280 113280 113280 113280 109504 109504 109504 109504 74176 111936 66560 125440 124352 128064 74368 123136 68160 118912 118912 135616 59904 139904 136320 188544 188544 169088 169088 76352 104128 102208 133440 109824 114560 101184 120064 114432 119936 108352 104128 177088 97984 112128 120320 106944 187328 85952 74624 74496 122944 112704 122816 48512 40448 40448 102720 104448 149824 101504 91008 245632 192384 206144 206592 173696 195648 113152 156416 106368 262144 186304 155712 114880 183296 107328 102592 161728 153728 80064 124672 110528 116288 141888 95104 40448 153920 138240 40448 40448 40448 40448 40448 168064 175488 115712 112768 94272 52672 103680 87040 122944 100416 36352 79360 79360 79360 83328 112192 112192 112192 112192 89088 86144 96896 94656 36352 114624 115712 106496 96128 96128 96128 72064 72064 72064 40064 40064 36352 36352 36352 134912 125248 56384 37504 36352 36352 36352 36352 36352 36352 36352 36352 82240 71616 59776 36352 36352 36352 38656 36352 103232 88896 36352 59840 36352 133440 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 109888 91968 91968 91968 92096 92096 92096 92096 92096 92096 92096 92096 92096 92096 92096 92096 92096 92096 92096 92096 92096 92096 92096 92096 80640 36352 55936 78912 36352 74112 36352 135744 167808 193088 157120 157120 125376 174784 232128 232128 222144 206912 206912 206912 206912 198976 178816 154880 154880 167680 208128 151296 139520 113792 80640 76032 76032 76032 76032 76032 76032 76032 62592 62592 62592 62592 62592 62592 62592 62592 58624 48384 73856 73856 73856 73088 40832 40832 40832 40832 40832 40832 40832 40832 40832 40832 40832 40832 40832 36352 36352 36352 36352 36352 36352 36352 36352 64320 36352 36352 36352 36352 36352 36352 --vkogqOf2sHV7VnPd Content-Type: TEXT/PLAIN; CHARSET=us-ascii Content-ID: Content-Description: Content-Disposition: ATTACHMENT; FILENAME=slab_glibc_merge 180032 119360 106176 200640 193472 156864 156864 156864 181440 181440 169152 169152 122048 179136 179392 203200 232832 232832 302848 303360 303872 304384 308608 326656 354240 327744 334272 347456 375808 326592 308672 304960 344768 324352 318464 340736 340736 351488 340736 340736 336768 356736 352640 336768 353856 352576 346560 343488 337600 340928 359616 340672 337600 340416 355008 360640 341504 365568 331456 353152 353600 330496 366464 358784 371072 318336 318336 304256 330880 327552 296832 295040 295040 297088 312192 298624 304256 296320 411392 431104 414720 416512 421888 429312 422656 411392 394240 415744 361728 366848 356864 372480 372480 390656 378624 382208 371968 381440 364544 364288 318336 318336 307328 307328 378688 358016 365824 372352 367488 346752 359168 339520 351168 334656 341568 330816 327488 335936 410368 388608 379648 373120 375680 426752 358464 409216 396864 417216 364480 433472 410240 472000 436800 373440 398080 398080 398080 398080 361984 361984 381184 381440 381440 381824 373632 457728 427968 436160 422016 463680 412096 416768 382976 347264 380416 332928 349568 285760 302912 248128 342720 338624 338624 335360 331456 331712 325184 302272 303104 303104 303104 329856 327424 483968 391232 368320 445312 395456 421376 344320 269824 256576 313600 304896 366464 355264 362112 456000 398208 526272 497280 518144 507200 511040 425536 349248 357824 389376 391616 372416 365760 422784 449664 538560 492992 537408 528192 524608 409280 468608 434304 398272 397568 468928 412160 381184 412224 372096 375296 390656 316352 307264 371648 486720 403776 400064 365120 389760 490944 355200 447168 428416 439680 501056 595200 591872 541312 549120 554048 646080 545344 572288 527872 561344 601472 595520 593728 665984 557248 683584 607808 553920 612032 603392 523264 589888 469504 690816 777728 677312 562240 407488 429440 500992 478592 405760 427456 534016 369472 369216 468352 396672 443392 418432 477504 445632 382720 282816 279424 303808 273408 250176 304256 277632 283136 297472 256320 244096 219328 267584 281216 259456 284160 341824 333248 315392 283008 263360 313280 401728 329344 291200 428032 284800 384960 371904 303232 342400 271168 292992 297408 363008 366336 401920 426176 362944 315840 337792 298752 306560 332352 323968 243520 329088 338432 310336 322112 319872 263552 395520 290240 278592 314304 254592 388416 342208 504640 501568 389248 430528 506112 465984 413952 474624 456896 377344 298048 308736 376768 381184 378432 406080 387840 401408 394560 299200 338880 293952 256576 282368 247872 276224 292032 360576 305920 364160 323584 416448 307904 289856 367040 322048 341120 397888 331072 306688 340928 319872 319872 328960 388352 382336 428224 380480 366720 313792 285120 321024 298304 285120 239168 388288 454464 430336 427904 520704 472576 525312 487296 591296 541760 523968 523072 548096 453056 509504 524800 499520 484992 440000 444160 440576 439360 420224 369344 372608 372608 372608 372608 372608 372608 372608 372608 372608 372608 356224 356224 356224 356224 356224 411584 399296 399488 399488 377472 541312 525760 525760 525760 525760 462784 462784 437248 431872 477120 563968 562048 559296 556224 547520 565888 582336 563968 552320 552320 543680 604928 601920 654720 633792 624704 575168 562112 545088 559872 594880 577024 585600 568128 559104 614400 576256 485504 529408 529408 524672 505664 497664 497664 495488 495488 483520 452032 454656 451136 451136 510592 514048 514048 514048 532032 487104 463040 426176 426176 426176 426176 403392 403392 401472 368832 368832 368832 404800 404800 404800 422336 422336 422336 422336 390400 361920 362048 359360 392704 390336 387968 388672 388672 426112 352704 356672 356800 356800 356800 357248 357248 357248 357248 357248 357248 357248 405952 405952 405952 405952 405952 444032 444032 442880 --vkogqOf2sHV7VnPd Content-Type: IMAGE/PNG; CHARSET=US-ASCII Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: ATTACHMENT; FILENAME=glibc-merge_vs_nomerge.png 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 AAAAAADwaP8AafqPjrL0bFkAAAAASUVORK5CYII= --vkogqOf2sHV7VnPd-- -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io0-f177.google.com (mail-io0-f177.google.com [209.85.223.177]) by kanga.kvack.org (Postfix) with ESMTP id BAFEB6B0254 for ; Fri, 4 Sep 2015 10:11:36 -0400 (EDT) Received: by ioii196 with SMTP id i196so24901165ioi.3 for ; Fri, 04 Sep 2015 07:11:36 -0700 (PDT) Received: from mail-io0-x233.google.com (mail-io0-x233.google.com. [2607:f8b0:4001:c06::233]) by mx.google.com with ESMTPS id p2si2470274igh.37.2015.09.04.07.11.35 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 Sep 2015 07:11:36 -0700 (PDT) Received: by iofh134 with SMTP id h134so25091293iof.0 for ; Fri, 04 Sep 2015 07:11:35 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <20150904075945.GA31503@swordfish> References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> <20150903122949.78ee3c94@redhat.com> <20150904063528.GA29320@swordfish> <20150904075945.GA31503@swordfish> Date: Fri, 4 Sep 2015 07:11:35 -0700 Message-ID: Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) From: Linus Torvalds Content-Type: text/plain; charset=UTF-8 Sender: owner-linux-mm@kvack.org List-ID: To: Sergey Senozhatsky Cc: Jesper Dangaard Brouer , Dave Chinner , Mike Snitzer , Christoph Lameter , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm , Sergey Senozhatsky On Fri, Sep 4, 2015 at 12:59 AM, Sergey Senozhatsky wrote: > > But I went through the corresponding slabinfo (I track slabinfo too); and yes, > zero unused objects. Ahh. I should have realized - the number you are actually tracking is meaningless. The "unused objects" thing is not really tracked well. /proc/slabinfo ends up not showing the percpu queue state, so things look "used" when they are really just on the percpu queues for that slab.So the "unused" number you are tracking is not really meaningful, and the zeroes you are seeing is just a symptom of that: slabinfo isn't "exact" enough. So you should probably do the statistics on something that is more meaningful: the actual number of pages that have been allocated (which would be numslabs times pages-per-slab). Linus -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io0-f172.google.com (mail-io0-f172.google.com [209.85.223.172]) by kanga.kvack.org (Postfix) with ESMTP id 03EC06B0254 for ; Fri, 4 Sep 2015 10:13:28 -0400 (EDT) Received: by ioiz6 with SMTP id z6so24994644ioi.2 for ; Fri, 04 Sep 2015 07:13:27 -0700 (PDT) Received: from resqmta-ch2-02v.sys.comcast.net (resqmta-ch2-02v.sys.comcast.net. [2001:558:fe21:29:69:252:207:34]) by mx.google.com with ESMTPS id b7si2476576igf.27.2015.09.04.07.13.27 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Fri, 04 Sep 2015 07:13:27 -0700 (PDT) Date: Fri, 4 Sep 2015 09:13:26 -0500 (CDT) From: Christoph Lameter Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) In-Reply-To: <20150904111038.4a428b03@redhat.com> Message-ID: References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> <20150903122949.78ee3c94@redhat.com> <20150904111038.4a428b03@redhat.com> Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-linux-mm@kvack.org List-ID: To: Jesper Dangaard Brouer Cc: Dave Chinner , Linus Torvalds , Mike Snitzer , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm On Fri, 4 Sep 2015, Jesper Dangaard Brouer wrote: > Thus, I could achieve the same performance results by tuning SLUB as I > could with "slab_nomerge". Maybe the advantage from "slab_nomerge" was > just that I got my "own" per CPU structures, and this implicitly larger > per CPU memory for myself? Well if multiple slabs are merged then there is potential pressure on the per node locks if huge amounts of objects are concurrently retrieved from the per node partial lists by two different subsystems. So cache merging can increase contention and thereby reduce performance. What you did with tuning is to reduce that contention by increasing the per cpu pages that do not require locks. -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pa0-f42.google.com (mail-pa0-f42.google.com [209.85.220.42]) by kanga.kvack.org (Postfix) with ESMTP id 641F46B0038 for ; Fri, 4 Sep 2015 18:46:47 -0400 (EDT) Received: by pacwi10 with SMTP id wi10so36491371pac.3 for ; Fri, 04 Sep 2015 15:46:47 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com. [209.132.183.28]) by mx.google.com with ESMTPS id ko10si6399885pbc.208.2015.09.04.15.46.45 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 Sep 2015 15:46:46 -0700 (PDT) Date: Sat, 5 Sep 2015 08:46:35 +1000 From: Dave Chinner Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) Message-ID: <20150904224635.GA2562@devil.localdomain> References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> <20150904032607.GX1933@devil.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Sender: owner-linux-mm@kvack.org List-ID: To: Christoph Lameter Cc: Linus Torvalds , Mike Snitzer , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm On Fri, Sep 04, 2015 at 08:55:25AM -0500, Christoph Lameter wrote: > On Fri, 4 Sep 2015, Dave Chinner wrote: > > > There are generic cases where it hurts, so no justification should > > be needed for those cases... > > Inodes and dentries have constructors. These slabs are not mergeable and > will never be because they have cache specific code to be executed on the > object. I know - I said as much early on in this discussion. That's one of the generic cases I'm refering to. I also said that the fact that they are not merged is really by chance, not by good management. They are not being merged because of the constructor, not because they have a shrinker. hell, I even said that if it comes down to it, we don't even need SLAB_NO_MERGE because we can create dummy constructors to prevent merging.... > > Really, we don't need some stupidly high bar to jump over here - > > whether merging should be allowed can easily be answered with a > > simple question: "Does the slab have a shrinker or does it back a > > mempool?" If the answer is yes then using SLAB_SHRINKER or > > SLAB_MEMPOOL to trigger the no-merge case doesn't need any more > > justification from subsystem maintainers at all. > > The slab shrinkers do not use mergeable slab caches. Please, go back and read what i've already said. *Some* shrinkers act on mergable slabs because they have no constructor. e.g. the xfs_dquot and xfs_buf shrinkers. I want to keep them separate just like the inode cache is kept separate because they have workload based demand peaks in the millions of objects and LRU based shrinker reclaim, just like inode caches do. That's what I want SLAB_SHRINKER for - to explicitly tell the slab cache creation that I have a shrinker on this slab and so it should not merge it with others. Every slab that has a shrinker should be marked with this flag - we should not be relying on constructors to prevent merging of critical slab caches with shrinkers.... I really don't see the issue here - explicitly encoding and documenting the behaviour we've implicitly been relying on for years is something we do all the time. Code clarity and documented behaviour is a *good thing*. Cheers, Dave. -- Dave Chinner dchinner@redhat.com -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qk0-f170.google.com (mail-qk0-f170.google.com [209.85.220.170]) by kanga.kvack.org (Postfix) with ESMTP id B603C6B0254 for ; Fri, 4 Sep 2015 20:25:50 -0400 (EDT) Received: by qkdv1 with SMTP id v1so15315302qkd.0 for ; Fri, 04 Sep 2015 17:25:50 -0700 (PDT) Received: from resqmta-ch2-06v.sys.comcast.net (resqmta-ch2-06v.sys.comcast.net. [2001:558:fe21:29:69:252:207:38]) by mx.google.com with ESMTPS id 79si5013399qky.115.2015.09.04.17.25.49 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Fri, 04 Sep 2015 17:25:49 -0700 (PDT) Date: Fri, 4 Sep 2015 19:25:48 -0500 (CDT) From: Christoph Lameter Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) In-Reply-To: <20150904224635.GA2562@devil.localdomain> Message-ID: References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> <20150904032607.GX1933@devil.localdomain> <20150904224635.GA2562@devil.localdomain> Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-linux-mm@kvack.org List-ID: To: Dave Chinner Cc: Linus Torvalds , Mike Snitzer , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm On Sat, 5 Sep 2015, Dave Chinner wrote: > > Inodes and dentries have constructors. These slabs are not mergeable and > > will never be because they have cache specific code to be executed on the > > object. > > I also said that the fact that they are not merged is really by > chance, not by good management. They are not being merged because of > the constructor, not because they have a shrinker. hell, I even said > that if it comes down to it, we don't even need SLAB_NO_MERGE > because we can create dummy constructors to prevent merging.... Right. There is no chance here though. Its intentional to not merge slab where we could get into issues. Would be interested to see how performance changes if the inode/dentries would become mergeable. > *Some* shrinkers act on mergable slabs because they have no > constructor. e.g. the xfs_dquot and xfs_buf shrinkers. I want to > keep them separate just like the inode cache is kept separate > because they have workload based demand peaks in the millions of > objects and LRU based shrinker reclaim, just like inode caches do. But then we are not sure why we would do that. Certainly merging can increases the stress on the per node locks for a slab cache as the example by Jesper shows (and this can be dealt with by increasing per cpu resources). On the other hand this also leads to rapid defragmentation because the free objects from partial pages produced by the frees of one of the merged slabs can get reused quickly for another purpose. > I really don't see the issue here - explicitly encoding and > documenting the behaviour we've implicitly been relying on for years > is something we do all the time. Code clarity and documented > behaviour is a *good thing*. The question first has to be answered why keeping them separate is such a good thing without also having an explicit way of telling the allocator to keep certain objects in the same slab page if possible. Otherwise we get this randomizing effect that nullifies the idea that sequential freeing/allocation would avoid fragmentation. I have in the past be in favor of adding such a flag to avoid merging but I am slowly getting to the point that this may not be wise anymore. There is too much arguing from gut reactions here and relying on assumptions about internal operations of slabs (thinking to be able to exploit the fact that linearly allocated objects come from the same slab page coming from you is one of these). Defragmentation IMHO requires a targeted approach were either objects that are in the way can be moved out of the way or there is some type of lifetime marker on objects that allows the memory allocators to know that these objects can be freed all at once when a certain operation is complete. -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ig0-f173.google.com (mail-ig0-f173.google.com [209.85.213.173]) by kanga.kvack.org (Postfix) with ESMTP id 847A06B0254 for ; Fri, 4 Sep 2015 20:36:30 -0400 (EDT) Received: by igbkq10 with SMTP id kq10so27862778igb.0 for ; Fri, 04 Sep 2015 17:36:30 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com. [209.132.183.28]) by mx.google.com with ESMTPS id q5si6917490pdb.41.2015.09.04.17.36.29 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 Sep 2015 17:36:29 -0700 (PDT) Date: Sat, 5 Sep 2015 10:36:18 +1000 From: Dave Chinner Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) Message-ID: <20150905003618.GB2562@devil.localdomain> References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> <20150904032607.GX1933@devil.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Sender: owner-linux-mm@kvack.org List-ID: To: Linus Torvalds Cc: Mike Snitzer , Christoph Lameter , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm On Thu, Sep 03, 2015 at 08:51:09PM -0700, Linus Torvalds wrote: > On Thu, Sep 3, 2015 at 8:26 PM, Dave Chinner wrote: > > > > The double standard is the problem here. No notification, proof, > > discussion or review was needed to turn on slab merging for > > everyone, but you're setting a very high bar to jump if anyone wants > > to turn it off in their code. > > Ehh. You realize that almost the only load that is actually seriously > allocator-limited is networking? Of course I do - I've been following Jesper's work quite closely because we might be able to make use of the batch allocation mechanism in the XFS inode cache in certain workloads where we are burning through a million inode slab allocations a second... But again, you're bringing up justifications for a change that were not documented in the commit message for the change. It didn't even mention performance (just fragmentation and memory savings). If this was such a critical factor in making this decision, then why weren't such workloads and numbers provided with the commit? And why didn't someone from netowkring actually review the change and ack/test that it did actually do what it was supposed to? If you are going to make an assertion, then you damn well better provide numbers to go along with that assertion. What's you're phrase, Linus? "Numbers talk and BS walks?" Where are the numbers, Linus? Hmmmm? Indeed, with network slabs that hot, mixing them with random other slab caches could have a negative effect on performance by increasing contention on the slab over what the network load already brings. I learnt that lesson 12 years ago when optimisng the mbuf slab allocator in the Irix network stack to scale to >1Mpps through 16 GbE cards: It worked just fine until we started doing something with the data that the network was delivering and created more load on the shared slab.... But, I digress. I've been trying to explain why we shouldn't be merging slabs with shrinkers and you've shifted the goal posts rather than addressing the discussion at hand. > Really, Dave. You have absolutely nothing to back up your points with. > Merging is *not* some kind of "new" thing that was silently enabled > recently to take you by surprise. The key slab tha I monitor for fragmentation behaviour (the XFS inode slab) does not get merged. Ever. SLAB or SLUB. Because it has a *constructor*. Linus, if you bothered to read my previous comments in this discussion then you'd know this. I just want to flag to extend that behaviour to all the slab caches I actively manage with shrinkers, because slab merging does not benefit them the same way it does passive slabs. That's not hard to understand, nor is it a major issue for anyone. >>From my perspective, Linus, you're way out of line. You are not engaging on a technical level - you're not even reading the arguments I've been presenting. You're just cherry-picking something mostly irrelelvant to the problem being discussed and going off at a tangent ranting and swearing and trying your best to be abusive. Your behaviour and bluster does not intimidate me, so please try to be a bit more civil and polite and engage properly on a technical level. -Dave. -- Dave Chinner dchinner@redhat.com -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pa0-f48.google.com (mail-pa0-f48.google.com [209.85.220.48]) by kanga.kvack.org (Postfix) with ESMTP id E180A6B0254 for ; Fri, 4 Sep 2015 21:16:55 -0400 (EDT) Received: by padhy16 with SMTP id hy16so36834442pad.1 for ; Fri, 04 Sep 2015 18:16:55 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com. [209.132.183.28]) by mx.google.com with ESMTPS id kg8si7068778pab.100.2015.09.04.18.16.24 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 Sep 2015 18:16:55 -0700 (PDT) Date: Sat, 5 Sep 2015 11:16:14 +1000 From: Dave Chinner Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) Message-ID: <20150905011614.GC2562@devil.localdomain> References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> <20150904032607.GX1933@devil.localdomain> <20150904224635.GA2562@devil.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Sender: owner-linux-mm@kvack.org List-ID: To: Christoph Lameter Cc: Linus Torvalds , Mike Snitzer , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm On Fri, Sep 04, 2015 at 07:25:48PM -0500, Christoph Lameter wrote: > On Sat, 5 Sep 2015, Dave Chinner wrote: > > > > Inodes and dentries have constructors. These slabs are not mergeable and > > > will never be because they have cache specific code to be executed on the > > > object. > > > > I also said that the fact that they are not merged is really by > > chance, not by good management. They are not being merged because of > > the constructor, not because they have a shrinker. hell, I even said > > that if it comes down to it, we don't even need SLAB_NO_MERGE > > because we can create dummy constructors to prevent merging.... > > Right. There is no chance here though. Its intentional to not merge slab > where we could get into issues. The dentry cache does not have a constructor: /* * A constructor could be added for stable state like the lists, * but it is probably not worth it because of the cache nature * of the dcache. */ dentry_cache = KMEM_CACHE(dentry, SLAB_RECLAIM_ACCOUNT|SLAB_PANIC|SLAB_MEM_SPREAD); > Would be interested to see how performance changes if the inode/dentries > would become mergeable. On my machines the dentry slab doesn't merge with any other slabs, though, because there are no other slabs with the same size object. That's one of the major crap shoots with slab merging that I want to fix. > > *Some* shrinkers act on mergable slabs because they have no > > constructor. e.g. the xfs_dquot and xfs_buf shrinkers. I want to > > keep them separate just like the inode cache is kept separate > > because they have workload based demand peaks in the millions of > > objects and LRU based shrinker reclaim, just like inode caches do. > > But then we are not sure why we would do that. Certainly merging can > increases the stress on the per node locks for a slab cache as the example > by Jesper shows (and this can be dealt with by increasing per cpu > resources). On the other hand this also leads to rapid defragmentation > because the free objects from partial pages produced by the frees of > one of the merged slabs can get reused quickly for another purpose. We can't control the freeing of objects from other merged slabs, unless they are also actively managed by a shrinker. So that page is pinned until the slab object is freed by whatever subsystem owns it, and no amount of memory pressure can cause that to happen. > > I really don't see the issue here - explicitly encoding and > > documenting the behaviour we've implicitly been relying on for years > > is something we do all the time. Code clarity and documented > > behaviour is a *good thing*. > > The question first has to be answered why keeping them separate is such a > good thing without also having an explicit way of telling the allocator to > keep certain objects in the same slab page if possible. Otherwise we get > this randomizing effect that nullifies the idea that sequential > freeing/allocation would avoid fragmentation. I don't follow. Sequential alloc/free of objects from an unshared slab does not alter fragmentation patterns of the slab. If it was fragmented before the sequntial run, it will be fragmented after. If you are talking about merging dentry/inode objects into the same slab and doing sequential allocation of them, that just does not work. the relationship between detries and inodes is an M:N relationship, not a 1:1 relationship, so they will never have nice neat aligned alloc/free patterns. > I have in the past be in favor of adding such a flag to avoid merging but > I am slowly getting to the point that this may not be wise anymore. There > is too much arguing from gut reactions here and relying on assumptions > about internal operations of slabs (thinking to be able to exploit the > fact that linearly allocated objects come from the same slab page coming > from you is one of these). Wow. The only time I've ever mentioned that we could do some interesting things if we knew certain objects were on the same backing page was earlier this year at LCA when we were talking about the design of the proposed batch allocation interface. You said that it probably couldn't be guaranteed and so i haven't even thought about that since. That's not an argument for preventing us from saying "don't merge this slab, we actively manage it's contents". > Defragmentation IMHO requires a targeted approach were either objects that > are in the way can be moved out of the way or there is some type of > lifetime marker on objects that allows the memory allocators to know that > these objects can be freed all at once when a certain operation is > complete. Which, if we know that there is only one type of object in the slab, is relatively easy to do and can be controlled by the subsystem shrinker.... :) Cheers, Dave. -- Dave Chinner dchinner@redhat.com -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pa0-f42.google.com (mail-pa0-f42.google.com [209.85.220.42]) by kanga.kvack.org (Postfix) with ESMTP id CD93D6B0038 for ; Fri, 4 Sep 2015 22:08:26 -0400 (EDT) Received: by padhy16 with SMTP id hy16so37688034pad.1 for ; Fri, 04 Sep 2015 19:08:26 -0700 (PDT) Received: from mail-pa0-x229.google.com (mail-pa0-x229.google.com. [2607:f8b0:400e:c03::229]) by mx.google.com with ESMTPS id p10si7280946pds.132.2015.09.04.19.08.25 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 Sep 2015 19:08:26 -0700 (PDT) Received: by padhy16 with SMTP id hy16so37687835pad.1 for ; Fri, 04 Sep 2015 19:08:25 -0700 (PDT) Date: Sat, 5 Sep 2015 11:09:07 +0900 From: Sergey Senozhatsky Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) Message-ID: <20150905020907.GA1431@swordfish> References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> <20150903122949.78ee3c94@redhat.com> <20150904063528.GA29320@swordfish> <20150904075945.GA31503@swordfish> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="gBBFr7Ir9EOA20Yy" Content-Disposition: inline In-Reply-To: Sender: owner-linux-mm@kvack.org List-ID: To: Linus Torvalds , Christoph Lameter Cc: Sergey Senozhatsky , Jesper Dangaard Brouer , Dave Chinner , Mike Snitzer , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm , Sergey Senozhatsky --gBBFr7Ir9EOA20Yy Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On (09/04/15 07:11), Linus Torvalds wrote: > > > > But I went through the corresponding slabinfo (I track slabinfo too); and yes, > > zero unused objects. > > Ahh. I should have realized - the number you are actually tracking is > meaningless. The "unused objects" thing is not really tracked well. > > /proc/slabinfo ends up not showing the percpu queue state, so things > look "used" when they are really just on the percpu queues for that > slab.So the "unused" number you are tracking is not really meaningful, > and the zeroes you are seeing is just a symptom of that: slabinfo > isn't "exact" enough. > > So you should probably do the statistics on something that is more > meaningful: the actual number of pages that have been allocated (which > would be numslabs times pages-per-slab). Aha... Didn't know that, sorry. Christoph Lameter wrote: > Please use the slabinfo tool. What you see in /proc/slabinfo is generated > for slab compatibility and may not show useful numbers. > OK. I did another round of tests git clone git://sourceware.org/git/glibc.git make -j8 package (xz) rm -fr glibc >>From slabinfo -T output Slabcaches : 91 Aliases : 118->69 Active: 65 Memory used: 60.0M # Loss : 13.2M MRatio: 28% # Objects : 162.4K # PartObj: 10.6K ORatio: 6% Per Cache Average Min Max Total --------------------------------------------------------- #Objects 2.4K 11 19.0K 162.4K #Slabs 108 1 1.8K 7.0K #PartSlab 34 0 1.6K 2.2K %PartSlab 7% 0% 86% 31% PartObjs 6 0 4.7K 10.6K % PartObj 3% 0% 33% 6% Memory 923.9K 8.1K 10.2M 60.0M Used 720.3K 8.0K 9.7M 46.8M Loss 203.6K 0 6.1M 13.2M Per Object Average Min Max --------------------------------------------- Memory 290 8 8.1K User 288 8 8.1K Loss 1 0 64 I took the "Memory used: 60.0M # Loss : 13.2M MRatio: 28%" line and generated 3 graphs: -- "Memory used" MM -- "Loss" LOSS -- "MRatio" RATION for "slab_nomerge = 0" and "slab_nomerge = 1". ... And those are sort of interesting. I was expecting to see more diverged behaviours. Attached. Please let me know if you want to see files with the numbers (slabinfo -T only). -ss --gBBFr7Ir9EOA20Yy Content-Type: image/png Content-Disposition: attachment; filename="glibc-RATIO-merge_vs_nomerge.png" Content-Transfer-Encoding: base64 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 --gBBFr7Ir9EOA20Yy Content-Type: image/png Content-Disposition: attachment; filename="glibc-LOSS-merge_vs_nomerge.png" Content-Transfer-Encoding: base64 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 5vksUs5kv26/7980X84c1fSjHPjsqKWlY6ZeWOr5IwsVPynu243cnzg8e/nC5ibf4fCRp1t+ 9t0tfcvTn+zzPnRb6G1rqTNLm5ztw7Nv4UmLn275m229tpHpty/kALCBMNkhTKF/ztvnjP/8 5X8/5BxGO3b79qCm/VzamVvkhaYOl5rcm679+6U+7bDq7vAm0yGsW+ILlt4vv7Kt3ht2duHX qhJyANhAmOxQPP9T+L9/Jjf68zr6IPPZkm9so3/T2/DTz+LHz8/Wd33ssO8fRTP3Sf83a575 CP0H39uTT5VnN74blTlT7XADMzfDDf9v7XMOnbbar9vmrXdomz1a7NDbVX58dRvLuD93fdlh tgnND2/Up/u2lr6vmd4ufSe9ezNlznzfz9qy8Nzs8rt712bXPllX+1y3SL/w2+v2g8eflDN8 fLq+fo2jRRcXnlQzLnruzTD5Zrt31Xzd41a92K6ZPrQPTH+BPPkBzs6hNrO8kAPABuKEnK8/ u8s7RM+ee+Z/X/eNezD49lPW//4sefrR/25ucwu7s8sv6O4dmn3ix8E240/6v1nzCp8sPxnS mMtlM58cD6udfP486eF04VVizuFwX9HhvqN3TTbX9/S92bvx3nF3M7P/e78zGQ/qfnhzO7Dv v9WHoeFWwFyZw6V3S3uxizu9i5vftd9bb8u75Rrape59OszU/3jdKBDNrKh/r13fXImH4d1B HYN1LlUz/530tzwq+kmKHNU+/bYn3+VsH5Z/+77+tup+ck/SHgCsJ07I2Q8/x765f6p42/t5 fDLb6i8581X3uslSh7mb7rknwxOPD9m7m8fHuMNP8rsP7/f3j/KbJYcfzI8+px+MMfRWOzNm sn/2+e7cC/rFtQsdxt/C45P+dpRnbm/l2SjAY6nv9D42nlt6uvLHz77fp8kDwzYObwb92w8/ up77KQx/Oo+PydtFHh0d/iB6QzG3NrZvwdE7cbjkeDDgMPynt/Dwf4feEqOlHy8a9HCmgIGZ 2gZlLiw9im/DL0Y70/2Xzn3bu2FLntUw+s4Po8JHr5v7todl9B7s/dSGhj/He+ULxS03dbLe /panTRglkNFGFle21K5Xqr0vfhi/YLCi4U97+DbcjRYBgBXFCTm7cQbpPn1/PHIYzmB06C/Z PTFY5JYrxku1nzXuD92+4mHy3G52P/uwa3eNHy/djf+s9/Z6DoOb/W2vebS+yV///f3b7q1t Zk9rdl9iebXTFXU7cf1vofdNjB8ZPP6NF5Y6jPv03fKTU1x2bw/CPNnwbe2D55s+3d4hXQ68 FTATXabbWd5jHiw12A8f70MepndGb7D+E5P3526mh4vDA/+jv+s8n12GmxzWvrTn/7MC/uPl y/8fPX5sz16wxe77Yf5HM3k3bmTy//xinBn9kljqyqbVApCxUCFneMzPPbbcY0q7Z9k6DJds dz53o0X246Xav9r75rb9Q71vnj/0EtV4F7pbR7drtrD3OI0N3ZjJddRkvL6ZlDPKaHML9bY8 MbvbPV3R7Lfw2FWe3S0f7Ygv+X53c7QH/kImmiz108ubzNew9OS+e3v0C9g1UbjtUVvA64nu myWHT493HZfujdc8efPtFju97q7nTAXTvd+Z7/Cwm6/uPwr4r5cvhuy5Iwx3i9/ZmpYr2nKr ve0s/JYa/pIbptTd8ntLxAFgI7FCzv3godFxMffDiB73ugd7h09MDQ/76q3rsB/sw9yPw9jf 77Unfo8P9ngcYDVKDL17Cwd0PAJU/5iP6fEs06NQDqPvbjd5wfi4k2Fvp7tHS9/CvSmPoPPY 1FyNu4lxepj5sTyeGJU1OD5nbvlHZ/Yzr5l8m+O1j16zVOZ9+G/a8MchlfvxOhdNI+aTpWZK nbxDnqx5rqm7UQ/H39Mqln5W0+dma3+/pP999dLr5n+rDB/8z03+b0WbbnVmQws/ztsjw5vJ 05u9zwCgEy3kvOKwcEbtD8x+WjocRdlmzoLZ1U5TzXCpH5cy6c748cXVHWY+YR+tZFDjQsJ4 8rqFrXY3bfxY3tEb/bSnP/thVY97g696tU6399oxdAAAfMpfDDkz++g/ziOzyy9Oa7Cm2dVO PvNc+lz/1Y0MRj1Gjz//eHXmE/aFFxwGS7z3WffopS/UN9xcb0XDqkZrHxW1VKaMAwCQsr8Z cnjFRoNRSZqNdAAA/E1hskOYQiPJaZffCQAAANkIkx3CFAoAAHxUmOwQplAAAOCjwmSHMIUC AAAfFSY7hCkUAAD4qDDZIUyhAADAR4XJDmEKBQAAPipMdghTKAAA8FFhskOYQgEAgI8Kkx3C FAoAAHxUmOwQplAAAOCjwmSHMIUCAAAfFSY7hCkUAAD4qDDZIUyhAADAR4XJDmEKBQAAPipM dghTKAAA8FFhskOYQgEAgI8Kkx3CFAoAAHxUmOwQplAAAOCjwmSHMIUCAAAfFSY7hCkUAAD4 qDDZIUyhAADAR4XJDmEKBQAAPipMdghTKAAA8FFhskOYQgEAgI8Kkx3CFAoAAHxUmOwQplAA AOCjwmSHMIUCAAAfFSY7hCkUAAD4qDDZIUyhAADAR4XJDmEKBQAAPiqh7HA6F8X5uPRsQoUC AAAJSyc7fEWcq7KafzqdQgEAgJQlkx2ORXGs669/z/PPJ1MoAACQtFSyQ1UUp+ttXRT17AKp FPoX6e129HY7ersdvd2O3m5Hb7ejt9vR2+2k0ttTUTZfnIvL7AKpFPoX6e129HY7ersdvd2O 3m5Hb7ejt9vR2+2k0ttL0U45cE87I6kU+hfp7Xb0djt6ux293Y7ebkdvt6O329Hb7aTS27I5 Wu12vNrsAqkU+hfp7Xb0djt6ux293Y7ebkdvt6O329Hb7aTS27I7Facqitn51VIp9C/S2+3o 7Xb0djt6ux293Y7ebkdvt6O320mlt4/5BoScX6e329Hb7ejtdvR2O3q7Hb3djt5uR2+3k0pv hZwP0tvt6O129HY7ersdvd2O3m5Hb7ejt9tJpbf9w9VmFygAAABe8YtB5pnzY+KB+dnVAAAA IulNIX3+bCUAAAAr+PZioAAAAJFU7cwD1WMGAgAAgMCORXHaVafS0WoAAMDfcG4mQihnJ5AG AAAI5/QVc8rjp6sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AICoTueiOB8/XcXfcSkeXw97q9NvOZ7LorxU3V29Xc/p2trzqXdfb1dVlfffCnq7mlPRqdsH 9HY99cXv200UfbdH9HZFtz9ml/pxV29Xc9sHO4b7nXBu/l8rq+8X5QVV8Qg5w97q9Du+dhMb 7f9FeruetntFObyvt6s5338r6O16LqOQo7crOg7zo96uZhJy9HZF3R+zy+Cu3q6gLofti9Lb r19lx7r++vf86Ur+huqxOzPqrU6/5ev/r2NV1ef2r67eruerb5e6qo7dHwa9Xdul6H4r6O2K zsXl1Lj9YdXbFZ1uvxSuv2/1dmWnu/L2G1dvV3S5tq+qv25O17t6u6KyKE9V9fWubT4NjdLb qn0v1PdPbPh/1fFc3HdnRr3V6becHp/WXv8n0tsVdaNjp+atq7drO91/K+jtmsqmfS29XVPZ /lJobvV2C6fb3qLerqn7nXC0n7C2Y3eox/nWxjC9PT3qvny2kr/g9BiB3o17q9NvuXQfENS3 /urteqr2w9ruC71d2ddb9tQdfK+3Kxr+PdXbFd3bV19OO73dhN+367v/MbOfsLpz95lSfdsZ C9PbS3eKw71G/l/1pb6HnGFvdfot5659u9tvMb1dT3U6NV+0b129XVdVFqfuTD29XVH/9Med 3q7q3r7RXb1dT7vTqLdr6j74aIYd9HZFj8+UYvW2fISz4umCvOjxl3fYW51+S12357M17dPb 1VXtEeJ6u7JrPu9+K+jtir7+nF7PGelmANPbFV2D+aUsznq7mWN7cILerul4PW9kdz3B9LTT 21WN2hemt2UXzu7DfLynH3L6vdXpdTSjoXq7sttEVd1R+Hq7otuBlo+Qo7er6eb/ao8G19sV ff0y0NtN3Xunt6vyvt3K/ZSBZjaSML3tjUClVlpQj5Az7K1Or6E6N1MU6u3KbiHnfGuj3q7p dHvDdr8V9HZFl+s7trqOQBZ+J6zsOhfssa5OZ73dyKU7d0Fv11Rd+iFHb1dUNb9vr6Pn1/aF 6W3CpQUl5Gzn+gusmYZdb9dW3XZorn3U2xXVTdeEnA2cbufE766fKV4/YtTbFfWufqG3W6jv rdPbFVXtNMf+lm2gu/jyMVbI6Q8yfbaSv2L+cDWdXsHxfkSV3m7icjtnUG9X1B6qPHe4mt6u pfa+XVs3g7TebuQxk47erqg3zfE1nOvtqq6n6V1Hc9pzcoL0tjcrXGpzIgT1+BkPe6vTb7pe bvfSfUagt1to3rt6u56qf3Hzs95uozkMXG9XdB4eYq+3K3sM5Ojtmkbnv+vtFpr2heltb+K3 5C5UGtMj5Ax7q9Pvqe8HUFzp7Xou5b1p4+m59fZN45Cjt1uovG/XdhmGHL1d2eXROb1d0eio Kb3dQjMvYJjeJnwJn6AeISfMxZIi+Gprv216u57j/R3rAmqrqxrXD26rSm/XVJfdpx7Nh4d6 u6Lj8LIXeruuqncdW71d0WgkR29XdCrvJwucdoF62/3P1v+fjnc8Qs6wtzr9luPw8wG9XU99 P9OpOY5Zb9fX/VbQ2xWV3e+E5gJPerui3gTHeru+Y+/EBb1d0aU73uPib9naukMs2zwTp7e3 iyZdZ+FMbYwpqt55V8Pe6vQ7iuJy6lzv6+16zl/Nrav6OhXv7feT3q7u/ltBb9dzvE8h3ezY 6O2KLkVxnUK6bD+g1dtVnfud09v13GZXq2/THPtbtrbzbea69jqrkXp7bo4X753vwDv6k0sM e6vT/29wbsOtgXq7mqrtXlG2n8Ho7dr605Ho7VqO3rfbOevtZqr74PmN3q7nOj/Rzam5r7fr qdredu/dOL09na/X/fp0FX/GYAa9YW91+r/Vk5Cjtys6ncuiPB979/V2Vb3fCnq7nvo2penx /mdVb1fUtE9vN3AaHdOjtyu6/TG7eN9uoDpeW/t46+otAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAsK6qKD5dAgAAwHqEHAAA4E8RcgAAgD9FyAEAAP4UIQcAAPiw07ksynPd v3fp7u2OZVGcj92dc1GUx6q58xVmqst12fZ+e6cNOcOVAgAA/Jqv4HJzmblXlc29surfaaJL UXQP3O7X7QuPt5AzXA0AAMCvuRTlqarqS5NV2nvnNp6Ut7tfueV8u1Mcq+pUNpHnK+Scr3Hn 1Dx5e7auj9dkM14pAADA7ynbHHIujtfhmCbA7I63eHJs734Fmer6z23Jqihuh68V1webJ5sX 3O7Vt4cHKwUAAPhFZXG63VZVdR2BOd4fvvQyynXM5tIde3Zshm7arHONNbfl20UvTcjprRQA AOAXfYWSy6mLImVRV41LUT5GeW7ObXBpU82uOxStmWngfmDabdRnsFIAAIDfdLlNJnA5Xb8u esprfOkFlXviaR/unryFnMei9e2r/koBAAB+VXU8l+0Mav2QU4wueVP8JOT0VwoAAPDrqmM5 OT7tkWNu59ZMD1frhZzR4WqDlQIAAPyiYzthQNWcS3NqH65PdW/igetEAtOJB/oh5zyYeGCw UgAAgF9UtjHkNj5z6o4v+7p3+nYK6X7IGU8h3VspAADAL2qu23m9xud1oOZ2Sc/qek3P63Fm VXMx0NP9YqCnqn8x0H7IqbqLgZbNiFB/pQAAAL/nmk6a2dSq/r1zMy5TzjxXNmffDEPObQjn 6jbxwHClAAAAv+k6D1p5Pt3vFb17t7kDzt0VQr/uFOWxzS2jkLOrLl+LXqr28eFKAQAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjaP89oGPrbV6RH AAAAAElFTkSuQmCC --gBBFr7Ir9EOA20Yy Content-Type: image/png Content-Disposition: attachment; filename="glibc-MM-merge_vs_nomerge.png" Content-Transfer-Encoding: base64 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 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAZKdDlh32357iVxyz7uvhylrnD+wPRVYc8/amlZ3M 6bKyh1PvtqWdUF5cfyFY2YmcslbZ3GFlp1Ie/aKdQ9ZX3WNpJ1P9O+xYdjet7ESq46593t6M urKH+n93Rf7tQX5CnnWRM1xZ6/x35yPFWvO/KCs7mWbxsmJ429JO5HD9hWBlp3K8iRwrO5n9 sB6t7FTuIsfSTqb9d9hxcNPKfqwshosXdWXPv9X2ZXn+ePj2JL8g745pblbWOn/g/L+1fZ6X h+ZfvlZ2MudlO5Z5vm//DWFpp3Vs/7utlZ3OITueavnlppWdzKn6dXD5RZtfblrZyZyuiupX raWdzPGyeHl5/lRdj2BlJ1NkxSnPz39j6/8EGnVl8+ZvRnn9jzf8Vb4/XM9F366sdf7AqftP tpf/QVnZ6bQnx07131tLO63T9ReClZ1OkZ16t6zsdIrm10H92crO4FQdMVra6bS/DvaODqa1 b6/vOFSLGHZlT90/x/G7k8R36s5Fb25X1jp/4Nj+x4KyWl0rO5m8+U+27ReWdlLnv6+n9gp8 KzuZ4b9WrexkrotXHk8bKzsHv2indv13mKODiR3a/5hUVgdgYVf22L7M4Tozf5WfldfIGa6s df7AoV28TfX7zMpOJj9df41Vf28t7ZTyIju1L9KzspPpv+5xY2UndF28m5tWdjLNgaOlnU77 3zzqEw9WdjLdf0yKvbJFNjzK4TPdv4CHK2udP1CWefNFtXhWdmp5c6G4pZ3UJc7bXwhWdjLn f6teXjXS7gFmZSdzifJjkR2OeXuzvt/KTmXfXJRgaaezv7xyZHN5XellFa3sZG4WL+zKFm2s XU/68Yl+5PRX1jpPoT4zamWndez2rbO0E6qusuwix8pOpN0BrLko3MpO5vxrwMrO6bp0lnZC /tLO4/oygXojkrAr2zsjtfZRQ+giZ7iy1vlz+aHertDKTquKnEO1ipZ2Oqfqb2v7C8HKTuZ4 +dtabfpTrZ2VncxlQ9h9mZ8OVnYex/b1C5Z2OvmxHzlWdjJ5/Yv2ctr8snhhVzbQqCGInLlc fpXVW7Jb2Ynl1WHNZRkt7WTKes1EzuROx+ZCiaL6L41WdjK9t8CwsjMorytnaSeTNxsd+1fY 5Np3Xd7Hjpz+SafvTvIbxi9Xs84f218vqbKyczhWLx+0tJNprlkeu1zNyk6j9Hd2Wu0O0lZ2 Ht0OOpZ2Mr2Nji9lbmUndHmF3uVsTvOanKAr29slbu17JITQ/f/4cGWt80cub717zJsbVnYG 9V9cSzuVvP8O5wcrO4f6anArO5nD8Dp7Kzut7kSOpZ3OzSvgrez06sULu7K9jeBW/8alEXSR M1xZ6/yJ8nodxYWVncyxuK7Z7e7clvYjt5FjZaeX+zs7reMwcqzstI7dwlnaydxcN2Vlp1fv CRh2ZQO9pU8IXeSEfeuk9Tkvan/RrOxk9te/rt5JbWJ57fJfb/Pcyk6nLNr/4FH/N0QrO5n9 8L0vrOyk8t6b2FraydycybGykzkV1xcIhH5v4PZ/eP3/AfJ3XeQMV9Y6f2A//G8FVnYy5fWF TvUFzZZ2au0vBCs7maL9dVC/uZOVnUze7XBsZSe37714wdJO5the5XH0r7BptZdXNj0Td2Wr t1C6bMe59nNOMfRehTVcWev8d1l2PLUut63sZA7ntS3z8rIdb/WrytJO7PoLwcpOZX/dQro+ urGykzlm2WUL6aL5r7RWdkqH/sJZ2qlUu6uV1UbH/hU2rUO1b13zLquRV/ZQXzbee80Df9ff amK4stb5rwYvb8gv91jZqeTN4mVF859jLO20+juRWNlp7P2dncvBys4lv541r1jaqVx2Jere J8fKTidvVrb9ext3ZS8bjBf714/jDYP99IYra53/qLyLHCs7ndOhyIrDvnfb0k6o9wvByk6l rHY23eftbSs7mXrx8uHN8Vv8l9PNdT2WdjLVv8OOeXfTyk4j318Wtvtra2UBAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAeeRZ9u0RAAAApiNyAACAnyJyAACAnyJyAACAnyJy AACALzsdiqw4lP1bx/bWZl9k2WHf3jhkWbHP6xvnmMmPl8c2t5sbTeQMnxQAAGAx53CpHEdu 5UV9q8j7N+p0ybL2jup22fzgvoqc4dMAAAAs5pgVpzwvj3WrNLcOTZ4U1c1ztxyqG9k+z09F nTznyDlccudUf7P6blnuL2Vz+6QAAADLKZoOOWT7y+mYOmA2+ypP9s3Nc8jklw/VI/Msqy5f yy531t+sf6C6VVZ3D54UAABgQUV2qj7neX45A7O/3n3sNcrlnM2xvfZsX5+6aVrnkjXV45uH HuvI6T0pAADAgs5RcjzlzY0iK/PaMSu6szyVQxMuTdVs2kvR6p0GrhemVWd9Bk8KAACwpGO1 mcCxKpisp7jkS9497lo8zd3tN6vI6R5aVl/1nxQAAGBR+f5QNDuo9SMnu3nLm+x/Iqf/pAAA AIvL98Xd9Wldx1Svrbm/XK3+5tjlaoMnBQAAWNC+2TAgr19L015gVp7K3sYDl40E7jceyNsf 3PQeWm08MHhSAACABRVNhlTnZ07t9WXnW6eXW0jXD81Ht5DuPSkAAMCC6vftvLzH5+VETfWW nvnlPT0v15nl9ZuBnq5voa4BCAAAAJpJREFUBnoavBlo9amJnLx9M9CiPiPUf1IAAIDlXOqk 3k0t7986XG5tymLke0X96pth5FSncC6qjQeGTwoAALCkyz5oxeF0vZX1blV7Bxzadwg938iK fV7fuImcTX48P/SYN/cPnxQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAACAJP0DIRy3w0fihJcAAAAASUVORK5CYII= --gBBFr7Ir9EOA20Yy-- -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io0-f172.google.com (mail-io0-f172.google.com [209.85.223.172]) by kanga.kvack.org (Postfix) with ESMTP id 0A1D96B0038 for ; Sat, 5 Sep 2015 16:33:06 -0400 (EDT) Received: by ioiz6 with SMTP id z6so55862776ioi.2 for ; Sat, 05 Sep 2015 13:33:05 -0700 (PDT) Received: from mail-io0-x231.google.com (mail-io0-x231.google.com. [2607:f8b0:4001:c06::231]) by mx.google.com with ESMTPS id a17si6484425ioe.56.2015.09.05.13.33.05 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 05 Sep 2015 13:33:05 -0700 (PDT) Received: by ioii196 with SMTP id i196so55878673ioi.3 for ; Sat, 05 Sep 2015 13:33:05 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <20150905020907.GA1431@swordfish> References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> <20150903122949.78ee3c94@redhat.com> <20150904063528.GA29320@swordfish> <20150904075945.GA31503@swordfish> <20150905020907.GA1431@swordfish> Date: Sat, 5 Sep 2015 13:33:04 -0700 Message-ID: Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) From: Linus Torvalds Content-Type: text/plain; charset=UTF-8 Sender: owner-linux-mm@kvack.org List-ID: To: Sergey Senozhatsky Cc: Christoph Lameter , Jesper Dangaard Brouer , Dave Chinner , Mike Snitzer , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm , Sergey Senozhatsky On Fri, Sep 4, 2015 at 7:09 PM, Sergey Senozhatsky wrote: > > Aha... Didn't know that, sorry. Hey, I didn't react to it either. until you pointed out the oddity of "no free slab memory" Very easy to overlook. > ... And those are sort of interesting. I was expecting to see more > diverged behaviours. > > Attached. So I'm not sure how really conclusive these graphs are, but they are certainly fun to look at. So I have a few reactions: - that 'nomerge' spike at roughly 780s is interesting. I wonder why it does that. - it would be interesting to see - for example - which slabs are the top memory users, and not _just_ the total (it could clarify the spike, for example). That's obviously something that works much better for the no-merge case, but could your script be changed to show (say) the "top 5 slabs". Showing all of them would probably be too messy, but "top 5" could be interesting. - assuming the times are comparable, it looks like 'merge' really is noticeably faster. But that might just be noise too, so this may not be real data. - regardless of how meaningful the graphs are, and whether they really tell us anything, I do like the concept, and I'd love to see people do things like this more often. Visualization to show behavior is great. That last point in particular means that if you scripted this and your scripts aren't *too* ugly and not too tied to your particular setup, I think it would perhaps not be a bad idea to encourage plots like this by making those kinds of scripts available in the kernel tree. That's particularly true if you used something like the tools/testing/ktest/ scripts to run these things automatically (which can be a *big* issue to show that something is actually stable across multiple boots, and see the variance). So maybe these graphs are meaningful, and maybe they aren't. But I'd still like to see more of them ;) Linus -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pa0-f50.google.com (mail-pa0-f50.google.com [209.85.220.50]) by kanga.kvack.org (Postfix) with ESMTP id 714C86B0038 for ; Mon, 7 Sep 2015 04:43:59 -0400 (EDT) Received: by padhy16 with SMTP id hy16so88783551pad.1 for ; Mon, 07 Sep 2015 01:43:59 -0700 (PDT) Received: from mail-pa0-x22d.google.com (mail-pa0-x22d.google.com. [2607:f8b0:400e:c03::22d]) by mx.google.com with ESMTPS id hm17si18924316pad.218.2015.09.07.01.43.57 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 07 Sep 2015 01:43:57 -0700 (PDT) Received: by pacex6 with SMTP id ex6so90981784pac.0 for ; Mon, 07 Sep 2015 01:43:57 -0700 (PDT) Date: Mon, 7 Sep 2015 17:44:37 +0900 From: Sergey Senozhatsky Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) Message-ID: <20150907084437.GA27956@swordfish> References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> <20150903122949.78ee3c94@redhat.com> <20150904063528.GA29320@swordfish> <20150904075945.GA31503@swordfish> <20150905020907.GA1431@swordfish> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="+HP7ph2BbKc20aGI" Content-Disposition: inline In-Reply-To: Sender: owner-linux-mm@kvack.org List-ID: To: Linus Torvalds Cc: Sergey Senozhatsky , Christoph Lameter , Jesper Dangaard Brouer , Dave Chinner , Mike Snitzer , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm , Sergey Senozhatsky --+HP7ph2BbKc20aGI Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On (09/05/15 13:33), Linus Torvalds wrote: > > ... And those are sort of interesting. I was expecting to see more > > diverged behaviours. > > > > Attached. Hello, sorry for long reply. > So I'm not sure how really conclusive these graphs are, but they are > certainly fun to look at. So I have a few reactions: > > - that 'nomerge' spike at roughly 780s is interesting. I wonder why > it does that. > Please find some stats below (with TOP 5 slabs). ~780s looks like the time when glibc build script begins to package glibc (gzip, xz...). > - it would be interesting to see - for example - which slabs are the > top memory users, and not _just_ the total (it could clarify the > spike, for example). That's obviously something that works much better > for the no-merge case, but could your script be changed to show (say) > the "top 5 slabs". Showing all of them would probably be too messy, > but "top 5" could be interesting. OFFTOP: Capturing is not a problem; visualizing -- is. With a huge number of samples the graph quickly becomes impossible to read. We have different N `top' slabs after every measurement, labeling them on a graph is a bit messy. So my script right now just picks the first slab (most Memory Used or biggest Loss value) per sample (e.g. every second) and does something like this (in png): 20 +-+---+------------+------------+------------+---+-+ | + + + + | | +------------+ SIZE +-----+ | 18 +-+ | | LOSS +-----+-+ | | | | | | | | | | | | 16 +-+ | | +-+ | | | | |------------+ | | 14 +-+ | | +-+ | | | | | | | +------------| | | | | | 12 +-+ |------------| | +-+ | | | | | | | | | | 10 +-+ | |-----------+ +-+ | | | | | | | | | | | | | | | 8 +-+----------| | | +-+ | | | |------------| | + | + | + | + | 6 +-+---+------------+------------+------------+---+-+ slab1 slab2 slab3 slab1 samples ^ ^ ^ ^ 1s 2s 3s 4s ... (<< not part of the graph) BACK to spikes. I modified `slabinfo' tool to report top N (5 in this case) slabs sorted by Memory usage and by Loss, along with Slab totals (+report everything in bytes, w/o the dynamic G/M/K scaling. well, techically Loss is `Space - Objects * Objsize' and can be calculated from the existing output, but I'm lazy. Besides top N biggest slabs and top N most fragmented ones do not necessarily overlap, so I print both sets). Some of the spikes. Samples are separated by "Sample #d". Test =============================================================================================== Sample -- 1 second. 98828288 -> 107409408 -> 100171776 Sample #408 Slabcache Totals ---------------- Slabcaches : 140 Aliases : 0->0 Active: 105 Memory used: 98828288 # Loss : 3872736 MRatio: 4% # Objects : 329484 # PartObj: 484 ORatio: 0% Per Cache Average Min Max Total --------------------------------------------------------- #Objects 3137 16 92313 329484 #Slabs 93 1 2367 9766 #PartSlab 0 0 8 57 %PartSlab 2% 0% 58% 0% PartObjs 0 0 142 484 % PartObj 0% 0% 38% 0% Memory 941221 4096 35258368 98828288 Used 904338 4096 33622848 94955552 Loss 36883 0 1635520 3872736 Per Object Average Min Max --------------------------------------------- Memory 289 8 8192 User 288 8 8192 Loss 1 0 64 Slabs sorted by size (5) --------------------------------------------------------- Name Objects Objsize Space Slabs/Part/Cpu O/S O %Fr %Ef Flg ext4_inode_cache 19368 1736 35258368 1072/0/4 18 3 0 95 a dentry 46200 288 13516800 1635/0/15 28 1 0 98 a inode_cache 12150 864 11059200 665/0/10 18 2 0 94 a buffer_head 92313 104 9695232 2363/0/4 39 0 0 99 a radix_tree_node 6832 576 3997696 240/0/4 28 2 0 98 a Slabs sorted by loss (5) --------------------------------------------------------- ext4_inode_cache 19368 1736 1635520 1072/0/4 18 3 0 95 a inode_cache 12150 864 561600 665/0/10 18 2 0 94 a dentry 46200 288 211200 1635/0/15 28 1 0 98 a biovec-256 46 4096 204800 7/7/5 8 3 58 47 A task_struct 174 4928 125568 19/3/11 6 3 10 87 Sample #409 Slabcache Totals ---------------- Slabcaches : 140 Aliases : 0->0 Active: 105 Memory used: 107409408 # Loss : 3782600 MRatio: 3% # Objects : 335908 # PartObj: 485 ORatio: 0% Per Cache Average Min Max Total --------------------------------------------------------- #Objects 3199 16 92742 335908 #Slabs 96 1 2378 10081 #PartSlab 0 0 39 67 %PartSlab 1% 0% 50% 0% # Objects : 335908 # PartObj: 485 ORatio: 0% # Objects : 335908 # PartObj: 485 ORatio: 0% Per Cache Average Min Max Total --------------------------------------------------------- #Objects 3199 16 92742 335908 #Slabs 96 1 2378 10081 #PartSlab 0 0 39 67 %PartSlab 1% 0% 50% 0% PartObjs 0 0 274 485 % PartObj 0% 0% 38% 0% Memory 1022946 4096 35422208 107409408 Used 986921 4096 33779088 103626808 Loss 36024 0 1643120 3782600 Per Object Average Min Max --------------------------------------------- Memory 310 8 8192 User 308 8 8192 Loss 1 0 64 Slabs sorted by size (5) --------------------------------------------------------- Name Objects Objsize Space Slabs/Part/Cpu O/S O %Fr %Ef Flg ext4_inode_cache 19458 1736 35422208 1077/0/4 18 3 0 95 a dentry 46620 288 13639680 1658/0/7 28 1 0 98 a inode_cache 12150 864 11059200 665/0/10 18 2 0 94 a buffer_head 92742 104 9740288 2367/0/11 39 0 0 99 a biovec-256 2128 4096 8749056 263/0/4 8 3 0 99 A Slabs sorted by loss (5) --------------------------------------------------------- ext4_inode_cache 19458 1736 1643120 1077/0/4 18 3 0 95 a inode_cache 12150 864 561600 665/0/10 18 2 0 94 a filp 2169 432 267216 134/39/13 18 1 26 77 A dentry 46620 288 213120 1658/0/7 28 1 0 98 a task_struct 165 4928 104384 18/2/10 6 3 7 88 Sample #410 Slabcache Totals ---------------- Slabcaches : 140 Aliases : 0->0 Active: 105 Memory used: 100171776 # Loss : 3975712 MRatio: 4% # Objects : 334759 # PartObj: 633 ORatio: 0% Per Cache Average Min Max Total --------------------------------------------------------- #Objects 3188 16 92859 334759 #Slabs 94 1 2381 9922 #PartSlab 0 0 12 74 %PartSlab 2% 0% 57% 0% PartObjs 0 0 209 633 % PartObj 0% 0% 38% 0% Memory 954016 4096 35618816 100171776 Used 916152 4096 33966576 96196064 Loss 37863 0 1652240 3975712 Per Object Average Min Max --------------------------------------------- Memory 289 8 8192 User 287 8 8192 Loss 1 0 64 Slabs sorted by size (5) --------------------------------------------------------- Name Objects Objsize Space Slabs/Part/Cpu O/S O %Fr %Ef Flg ext4_inode_cache 19566 1736 35618816 1083/0/4 18 3 0 95 a dentry 46788 288 13688832 1661/0/10 28 1 0 98 a inode_cache 12150 864 11059200 665/0/10 18 2 0 94 a buffer_head 92859 104 9752576 2371/0/10 39 0 0 99 a radix_tree_node 6888 576 4030464 242/0/4 28 2 0 98 a Slabs sorted by loss (5) --------------------------------------------------------- ext4_inode_cache 19566 1736 1652240 1083/0/4 18 3 0 95 a inode_cache 12150 864 561600 665/0/10 18 2 0 94 a biovec-256 54 4096 237568 8/8/6 8 3 57 48 A dentry 46788 288 213888 1661/0/10 28 1 0 98 a task_struct 169 4928 182976 20/5/11 6 3 16 81 Another test. =============================================================================================== Sample -- 1 second. 251637760 -> 306782208 -> 252264448 Sample #426 Slabcache Totals ---------------- Slabcaches : 140 Aliases : 0->0 Active: 107 Memory used: 251637760 # Loss : 11002192 MRatio: 4% # Objects : 528119 # PartObj: 6437 ORatio: 1% Per Cache Average Min Max Total --------------------------------------------------------- #Objects 4935 11 114582 528119 #Slabs 164 1 4718 17594 #PartSlab 3 0 141 394 %PartSlab 4% 0% 65% 2% PartObjs 1 0 2422 6437 % PartObj 2% 0% 42% 1% Memory 2351754 4096 154599424 251637760 Used 2248930 3584 147428064 240635568 Loss 102824 0 7171360 11002192 Per Object Average Min Max --------------------------------------------- Memory 457 8 8192 User 455 8 8192 Loss 2 0 64 Slabs sorted by size (5) --------------------------------------------------------- Name Objects Objsize Space Slabs/Part/Cpu O/S O %Fr %Ef Flg ext4_inode_cache 84924 1736 154599424 4714/0/4 18 3 0 95 a dentry 114408 288 33472512 4080/0/6 28 1 0 98 a buffer_head 114582 104 12034048 2934/0/4 39 0 0 99 a inode_cache 12186 864 11091968 667/0/10 18 2 0 94 a radix_tree_node 10388 576 6078464 367/0/4 28 2 0 98 a Slabs sorted by loss (5) --------------------------------------------------------- ext4_inode_cache 84924 1736 7171360 4714/0/4 18 3 0 95 a inode_cache 12186 864 563264 667/0/10 18 2 0 94 a dentry 114408 288 523008 4080/0/6 28 1 0 98 a kmalloc-128 4117 128 353664 160/141/55 32 0 65 59 kmalloc-2048 1421 2048 202752 80/27/15 16 3 28 93 Sample #427 Slabcache Totals ---------------- Slabcaches : 140 Aliases : 0->0 Active: 107 Memory used: 306782208 # Loss : 11304176 MRatio: 3% # Objects : 569050 # PartObj: 6538 ORatio: 1% Per Cache Average Min Max Total --------------------------------------------------------- #Objects 5318 11 114777 569050 #Slabs 187 1 4725 20096 #PartSlab 3 0 141 391 %PartSlab 3% 0% 65% 1% PartObjs 1 0 2422 6538 % PartObj 1% 0% 42% 1% Memory 2867123 4096 154828800 306782208 Used 2761476 3584 147646800 295478032 Loss 105646 0 7182000 11304176 Per Object Average Min Max --------------------------------------------- Memory 521 8 8192 User 519 8 8192 Loss 2 0 64 Slabs sorted by size (5) --------------------------------------------------------- Name Objects Objsize Space Slabs/Part/Cpu O/S O %Fr %Ef Flg ext4_inode_cache 85050 1736 154828800 4721/0/4 18 3 0 95 a biovec-256 12416 4096 50954240 1550/3/5 8 3 0 99 A dentry 114548 288 33513472 4075/0/16 28 1 0 98 a buffer_head 114777 104 12054528 2939/0/4 39 0 0 99 a inode_cache 12186 864 11091968 667/0/10 18 2 0 94 a Slabs sorted by loss (5) --------------------------------------------------------- ext4_inode_cache 85050 1736 7182000 4721/0/4 18 3 0 95 a inode_cache 12186 864 563264 667/0/10 18 2 0 94 a dentry 114548 288 523648 4075/0/16 28 1 0 98 a kmalloc-128 4117 128 353664 160/141/55 32 0 65 59 bio-0 12852 176 244800 589/0/23 21 0 0 90 A Sample #428 Slabcache Totals ---------------- Slabcaches : 140 Aliases : 0->0 Active: 107 Memory used: 252264448 # Loss : 11537008 MRatio: 4% # Objects : 529408 # PartObj: 8649 ORatio: 1% Per Cache Average Min Max Total --------------------------------------------------------- #Objects 4947 11 115947 529408 #Slabs 165 1 4725 17655 #PartSlab 5 0 141 566 %PartSlab 5% 0% 65% 3% PartObjs 1 0 2422 8649 % PartObj 2% 0% 42% 1% Memory 2357611 4096 154828800 252264448 Used 2249789 3584 147646800 240727440 Loss 107822 0 7182000 11537008 Per Object Average Min Max --------------------------------------------- Memory 456 8 8192 User 454 8 8192 Loss 2 0 64 Slabs sorted by size (5) --------------------------------------------------------- Name Objects Objsize Space Slabs/Part/Cpu O/S O %Fr %Ef Flg ext4_inode_cache 85050 1736 154828800 4721/0/4 18 3 0 95 a dentry 114660 288 33546240 4075/0/20 28 1 0 98 a buffer_head 115947 104 12177408 2942/0/31 39 0 0 99 a inode_cache 12186 864 11091968 667/0/10 18 2 0 94 a radix_tree_node 10444 576 6111232 369/0/4 28 2 0 98 a Slabs sorted by loss (5) --------------------------------------------------------- ext4_inode_cache 85050 1736 7182000 4721/0/4 18 3 0 95 a inode_cache 12186 864 563264 667/0/10 18 2 0 94 a dentry 114660 288 524160 4075/0/20 28 1 0 98 a filp 3572 432 447552 227/113/16 18 1 46 77 A kmalloc-128 4117 128 353664 160/141/55 32 0 65 59 Attached some graphs for NOMERGE kernel. So far, I haven't seen those spikes for 'merge' kernel. > - assuming the times are comparable, it looks like 'merge' really is > noticeably faster. But that might just be noise too, so this may not > be real data. > > - regardless of how meaningful the graphs are, and whether they > really tell us anything, I do like the concept, and I'd love to see > people do things like this more often. Visualization to show behavior > is great. > > That last point in particular means that if you scripted this and your > scripts aren't *too* ugly and not too tied to your particular setup, I > think it would perhaps not be a bad idea to encourage plots like this > by making those kinds of scripts available in the kernel tree. That's > particularly true if you used something like the tools/testing/ktest/ > scripts to run these things automatically (which can be a *big* issue > to show that something is actually stable across multiple boots, and > see the variance). Oh, that's a good idea. I didn't use tools/testing/ktest/, it's a bit too massive for my toy script. I have some modifications to slabinfo and a rather ugly script to parse files and feed them to gnuplot (and yes, I use gnuplot for plotting). slabinfo patches are not entirely dumb and close to being ready (well.. except that I need to clean up all those %6s sprintfs that worked fine for dynamically scalled sizes and do not work so nicely for sizes in bytes). I can send them out later. Less sure about the script (bash) tho. In a nutshell it's just a number of grep | awk > FOO; gnuplot ... FOO So I'll finish some plotting improvements first (not ready yet) and then I'll take a look how quickly I can land it (rewrite in perl) in tools/testing/ktest/. > So maybe these graphs are meaningful, and maybe they aren't. But I'd > still like to see more of them ;) Thanks. -ss --+HP7ph2BbKc20aGI Content-Type: image/png Content-Disposition: attachment; filename="nomerge-mm-loss-usage-1.png" Content-Transfer-Encoding: base64 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 h5JeNgbvjdPnCF4YteTreblSMCvIft37edTFce64S8ON3/KPUrumPYUmfxYHwYvHiqTdef1z zFymGH7fTruTjcH7970awp+HyPe+oh4mm+vsYwQvHisWvOdpZoHIFbHb7mRj8P715ZrLLxiz M7oRsOlX1I1zTTK+7YbJZp/9SoIXj5XIvfP0f1Cy64i3/euI9zqpuwfBm35FMz7Rz8vHqngp jFPts19K8OKxQsHLhK6cna5AMc/x/m1ZQ+uvgrd/tXqUXY2bfkXlXNW2/cd5Ynla1ZDfI43g xWOHByBTuqJ2WdVQj8Hb3ppfzX/dOGC9uPfeZdu2XxGmd2uXwfH8UHbcTfDisRcj8OXkJHJV 7XOV4ab//6pzf1rUMM3mXtazmSfw0xB63HZy+xX1nK/NPM6eRrwtI1686ODgJXdl7bI72Twt 2/z1pOGrOd7pIN18cxrNJhv9rl/RzfctCTzOdIT8oJngxWNHBS8XZle3z14NVed909V//8LL 4O1DtPYxwqdxbzeEarOOYdevWPK1Te7yTXPj/DmCF499Pni5RjCisnl0FbzVsqhhGs7GyYY6 2fcmDd52uWtZ1xCjN78cguDFYx8P3jP76yJ6P4+qOv/5M66CN84TtyHExQtjfsYDduncwfoV 62zwjf3ItghePPZiKj7zVefpA7mL0y4nUPj858+4nmqY5yv8PLtQuc3cAcGLD/pw8BK6mLyX R6HnfJjVfz1z7fapbunEbZqr+amGJ95qnsL4W4HQ8lrwPvNVnCaBwS5B5N2FP26Sczszl4nb sD2Jbf2KZj249sw4m8TFY58KXk6TwNa+wZvfJuG2u8E7ftI4nwZrdjnZM3FP8OKxzwQvQ11c 2neO968ug7f188YL8zC2cj74ZJI33DmB4n6Zr1cJGfsHL6t1kbPDJjlv7MF7NeJdjqlNp0yE OM/QJpMN4eqU4fDc9usELx7bO3gJXeTtsBH6G1edSIK3GU57q8blZPU8vTCOZrt1VJ18Rdcn 7/DUp5Kf4MVjLwbvrflbYhc37LEfr69evb5wEqPTwbRqM1tcTXs+rpMN97aFvF/miyVCyb7B S+7ilj32442rGeqXvvY6eE9tF88+G4+bLdudrZMNm8mJuBG6z17o5xrBi8d2C152YsBdO+RR qIbsfWfK4QAELx7bJ3jJXDyyTx7FYWo/+LScvQQvHtsleEldPLRbHrXD5pCvT/d+GsGLx94P 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 --+HP7ph2BbKc20aGI Content-Type: image/png Content-Disposition: attachment; filename="nomerge-mm-loss-usage-2.png" Content-Transfer-Encoding: base64 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 O7I7JC529MM83S+ksscb70YZlqaAdca3wbo6nWx15/M7BC+2NU4UI2+/mcbgDWvTvqL30ySz nLbdkM6+OTK8WEDxEsGLbZG3X09j8K5foWc6p1aWTIQ0zhCbwYbwsGQ4PN3IbIHgxaYI3e+n MXjNtBuOtem+SzuLpdNtaTqZrcMLuTfbz4MNzZm0fkje8dBPRhoIXmyJ3u4VKAzeYBopcsvJ tLqCIm+q25Vh4Hmw4dW2kC8RvNgOqXsJCoM3PgneW+zT6rOuHmTrjbW5Y2kjdP9kPto9ghdb obt7EQqD93BqCsW+SN3rIHj3p6ZQ7InUvRKCd39qCsWOiN1LIXj3p6ZQ7IjgvRSCd39qCsV+ yN1rIXj3p6ZQ7IfgvRaCd39qCsV+CN5rIXj3p6ZQ7IfgvRaCd39qCsV+CN5rIXj3p6ZQ7Ifg vRaCd39qCsV+CN5rIXj3p6ZQ7IfgvRaCd39qCsV+CN5rIXj3p6ZQ7IfgvRaCd39qCsV+CN5r IXj3p6ZQ7IfgvRaCd39qCsV+CN5rIXj3p6ZQ7IfgvRaCd39qCsV+CN5rIXj3p6ZQ7IfgvRaC d39qCsV+CN5rIXj3p6ZQ7IfgvRaCd39qCsV+CN5rIXj3p6ZQ7IfgvZjzvqBq8khNodgPwXsx BO/u1BSK3ZC7V0Pw7k5NodgNwXs1BO/u1BSK3RC8V0Pw7k5NodgNwXs1BO/u1BSK3RC8V0Pw 7k5NodgNwXs1BO/u1BSK3RC8V0Pw7k5NodgNwXs1BO/u1BSK3RC8V0Pw7k5NodgNwXs1BO/u 1BSK3RC8V0Pw7k5NodgNwXs1BO/u1BSK3RC8V0Pw7k5NodgNwXs1BO/u1BSK3RC8V0Pw7k5N odgNwXs1BO/u1BSK3RC8l3Pal1RNHqkpFLsheC+H4N2bmkKxG4L3cgjevakpFLsheC+H4N2b mkKxG4L3cgjevakpFLsheC+H4N2bmkKxG4L3cgjevakpFHshd6+H4N2bmkKxF4L3egjevakp FHsheK/npzj8jdXkkZpCsReCF5tRk0dqCsVeCF5sRk0eqSkUeyF4sRk1eaSmUOyE3MV21OSR mkKxE4IX27lUHoXeG9+H1ef+Wmg583nGCVCIwBce27lS8IYhdp03ZjV5zc/f3PLUk9s8AwXK HPvdjEu7UvD2phv+7Ixbe/JKhQL4blfKI5/7usavPXmlQgF8tyvlUQ7eQPACkO1KeWSNi7fg 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 APhO/wN0dANPG29HhAAAAABJRU5ErkJggg== --+HP7ph2BbKc20aGI-- -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io0-f172.google.com (mail-io0-f172.google.com [209.85.223.172]) by kanga.kvack.org (Postfix) with ESMTP id 88F106B0038 for ; Mon, 7 Sep 2015 20:21:37 -0400 (EDT) Received: by iofb144 with SMTP id b144so100838750iof.1 for ; Mon, 07 Sep 2015 17:21:37 -0700 (PDT) Received: from mail-pa0-x229.google.com (mail-pa0-x229.google.com. [2607:f8b0:400e:c03::229]) by mx.google.com with ESMTPS id fm4si2345377pab.148.2015.09.07.17.21.36 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 07 Sep 2015 17:21:36 -0700 (PDT) Received: by padhk3 with SMTP id hk3so22483359pad.3 for ; Mon, 07 Sep 2015 17:21:36 -0700 (PDT) Date: Tue, 8 Sep 2015 09:22:20 +0900 From: Sergey Senozhatsky Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) Message-ID: <20150908002220.GC6896@swordfish> References: <20150903060247.GV1933@devil.localdomain> <20150903122949.78ee3c94@redhat.com> <20150904063528.GA29320@swordfish> <20150904075945.GA31503@swordfish> <20150905020907.GA1431@swordfish> <20150907084437.GA27956@swordfish> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150907084437.GA27956@swordfish> Sender: owner-linux-mm@kvack.org List-ID: To: Linus Torvalds Cc: Sergey Senozhatsky , Christoph Lameter , Jesper Dangaard Brouer , Dave Chinner , Mike Snitzer , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm , Sergey Senozhatsky On (09/07/15 17:44), Sergey Senozhatsky wrote: [...] > Oh, that's a good idea. I didn't use tools/testing/ktest/, it's a bit too > massive for my toy script. I have some modifications to slabinfo and a rather > ugly script to parse files and feed them to gnuplot (and yes, I use gnuplot > for plotting). slabinfo patches are not entirely dumb and close to being ready > (well.. except that I need to clean up all those %6s sprintfs that worked fine > for dynamically scalled sizes and do not work so nicely for sizes in bytes). I > can send them out later. Less sure about the script (bash) tho. In a nutshell > it's just a number of > grep | awk > FOO; gnuplot ... FOO > > So I'll finish some plotting improvements first (not ready yet) and then > I'll take a look how quickly I can land it (rewrite in perl) in > tools/testing/ktest/. Hi, uploaded my scripts to https://github.com/sergey-senozhatsky/slabinfo A set of very simple bash scripts. The README file contains some sort of documentation and a 'tutorial'. ================================================================== To start collecting samples, record file name is NOMERGE, note sudo sudo ./slabinfo-plotter.sh -r NOMERGE #^C or reboot pre-process records file for gnuplot ./slabinfo-plotter.sh -p NOMERGE -b gnuplot File gnuplot_slabs-by-loss-NOMERGE File gnuplot_slabs-by-size-NOMERGE File gnuplot_totals-NOMERGE generate grphs from 'slabinfo totals' ./gnuplot-totals.sh -f gnuplot_totals-NOMERGE Graph file name -- gnuplot_totals-NOMERGE.png ... ================================================================== Two things: -- it wants a patched version of slabinfo (some sort of patches are in kernel_patches/ dir) -- it wants slabinfo to be in PATH For now on it does what it does -- captures numbers and picks only ones that are interesting to me and generates plots. I'm doing this in my spare time, but I'm surely accepting improvement requests/ideas, pull requests, and everything that follows. Will play around with the scripts for some time to make sure they are usable and then we can decide if there is a place for something like this in the kernel or it's better be done somehow differently. -ss -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ig0-f172.google.com (mail-ig0-f172.google.com [209.85.213.172]) by kanga.kvack.org (Postfix) with ESMTP id 5B7556B0038 for ; Mon, 7 Sep 2015 16:22:14 -0400 (EDT) Received: by igcrk20 with SMTP id rk20so59690003igc.1 for ; Mon, 07 Sep 2015 13:22:14 -0700 (PDT) Received: from mail-ig0-x22f.google.com (mail-ig0-x22f.google.com. [2607:f8b0:4001:c05::22f]) by mx.google.com with ESMTPS id ip4si1174935igb.21.2015.09.07.13.22.13 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 07 Sep 2015 13:22:13 -0700 (PDT) Received: by igbni9 with SMTP id ni9so63363226igb.0 for ; Mon, 07 Sep 2015 13:22:13 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <20150907113026.5bb28ca3@redhat.com> References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> <20150904032607.GX1933@devil.localdomain> <20150907113026.5bb28ca3@redhat.com> Date: Mon, 7 Sep 2015 13:22:13 -0700 Message-ID: Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) From: Linus Torvalds Content-Type: text/plain; charset=UTF-8 Sender: owner-linux-mm@kvack.org List-ID: To: Jesper Dangaard Brouer Cc: Dave Chinner , Mike Snitzer , Christoph Lameter , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm , "netdev@vger.kernel.org" On Mon, Sep 7, 2015 at 2:30 AM, Jesper Dangaard Brouer wrote: > > The slub allocator have a faster "fastpath", if your workload is > fast-reusing within the same per-cpu page-slab, but once the workload > increases you hit the slowpath, and then slab catches up. Slub looks > great in micro-benchmarking. > > And with "slab_nomerge" I get even high performance: I think those two are related. Not merging means that effectively the percpu caches end up being bigger (simply because there are more of them), and so it captures more of the fastpath cases. Obviously the percpu queue size is an easy tunable too, but there are real downsides to that too. I suspect your IP forwarding case isn't so different from some of the microbenchmarks, it just has more outstanding work.. And yes, the slow path (ie not hitting in the percpu cache) of SLUB could hopefully be optimizable too, although maybe the bulk patches are the way to go (and unrelated to this thread - at least part of your bulk patches actually got merged last Friday - they were part of Andrew's patch-bomb). Linus -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mike Snitzer Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) Date: Wed, 2 Sep 2015 20:51:15 -0400 Message-ID: <20150903005115.GA27804@redhat.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: Sender: owner-linux-mm@kvack.org To: Linus Torvalds Cc: Dave Chinner , Christoph Lameter , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm List-Id: dm-devel.ids On Wed, Sep 02 2015 at 7:13pm -0400, Linus Torvalds wrote: > On Wed, Sep 2, 2015 at 10:39 AM, Mike Snitzer wrote: > > > > - last but not least: add SLAB_NO_MERGE flag to mm/slab_common and > > disable slab merging for all of DM's slabs (XFS will also use > > SLAB_NO_MERGE once merged). > > So I'm not at all convinced this is the right thing to do. In fact, > I'm pretty convinced it shouldn't be done this way. Since those > commits were at the top of your tree, I just didn't pull them, but > took the rest.. OK, thanks. > You are basically making this one-sided decision based on your notion > of convenience, and just forcing that thing unconditionally on people. The switch to slab merging was forced on everyone without proper notice. What I made possible with SLAB_NO_MERGE is for each subsystem to decide if they would prefer to not allow slab merging. > Your rationale seems _totally_ bogus: you say that it's to be able to > observe the sizes of the dm slabs without using slab debugging. > > First off, you don't have to enable slab debugging. You can just > disable slab merging. It's called "slab_nomerge". It does exactly > what you would think it does. I'm well aware of slab_nomerge. I called it out in my commit message. > And what is it that makes dm slabs such a special little princess? > What makes you think that the fact that _you_ want to look at slab > statistics means that everybody else suddenly must have separate slabs > for dm, and dm only? Or xfs? >From where I sit it is much more useful to have separate slabs. Could be if a case was actually made for slab merging I'd change my view. But as of now these trump the stated benefits of slab merging: 1) useful slab usage stats 2) fault isolation from other subsystems > The other "rationale" was that not merging slabs limits > cross-subsystem memory corruption. Again, what the _hell_ is special > about device mapper that dm - and only dm - would make this a special > thing? That is just pure and utter garbage. Again, we already have > that "slab_nomerge" option, exactly so that when odd slab corruption > issues happen (they are rare, but they do occasionally happen), you > can try that to see if that pinpoints the problem more. And it is > *not* limited to some random set of subsystems. Which makes it clearly > superior to your broken approach, wouldn't you agree? I'm not interested in deciding such things for everyone. I added a flag that enables piecewise enablement of unshared slabs for subsystems that really don't want shared slabs. Aside from improved accounting, the point is to not allow other crap code (e.g. staging or whatever) to impact other subsystems via shared slabs. > The only possible true rationale for why dm is special is "because dm > is such a buggy piece of sh*t that it's much more likely to have these > slab corruption bugs than anything else, so I'm just protecting the > rest of the system". > > Is that really your rationale? Somehow I doubt it. But if it is, you > really should have said so. At least then it would make sense why this > thing came in through the dm tree, and why dm is so special than it - > and only it - would disable slab merging. The 3 lines that added SLAB_NO_MERGE were pretty damn clean. SLAB_NO_MERGE gives subsystems a choice they didn't have before and they frankly probably never knew they had to care about it because they didn't know slabs were being merged. I asked around enough to know I'm not an idiot for having missed the memo on slab merging. Lack of awareness aside, nobody ever _convincingly_ detailed why slab merging was pushed on everyone. Look at the header for commit 12220de ("mm/slab: support slab merge") -- now that is some seriously weak justification! I sought to get more insight on "why slab merging?" and all I found was this in Documentation/vm/slub.txt: " Slab merging ------------ If no debug options are specified then SLUB may merge similar slabs together in order to reduce overhead and increase cache hotness of objects. slabinfo -a displays which slabs were merged together." " I couldn't even find which package provides slabinfo to run slabinfo -a! And the hand-wavvy "reduce overhead and increase cache hotness of objects" frankly sucks. > So I'm not pulling things like this from the device mapper tree. There > is just no excuse that I can see for something like SLAB_NO_MERGE to > go through the dm tree in the first place, but that's doubly true when > the rationale for these things were bogus and had nothing what-so-ever > to do with dm. As DM maintainer I do have a choice about how the subsystem is architected. > Things like this aren't supposed to come in through random irrelevant > trees like this, and with no discussion (at least judging by the > commits) with the maintainers of the other pieces of code. DM is irrelevant now? Because I pissed you off? Or because you trully think that? This is the first and hopefully last time I get flamed by you. I shouldn't have pushed for this change so aggressively. The lack of feedback from mm people shouldn't have been taken by me as implied "we forced it on you a year ago, fuck you". But I'm genuinely _not_ appreciative of this change to shared slabs so I took action to restore what I hold to be the right way to design system software. > If you have issues with slab merging, then those should be discussed > as such, not as some magical and bogus dm or xfs special case when > they damn well aren't, and damn well will never be. > > Yes, I'm annoyed. This was not done well. I realize that everybody > thinks that _their_ code is so special and exceptional that > "obviously" they should be treated specially, but I don't see that > that is the case at all in this case. > > If you want to argue that slab merging should be disabled by default, > then that is an argument that I'm willing to believe might be valid > ("the downsides are bigger than the upsides"). Or if you are able to > explain why dm really _is_ special, that's an option too. But this > kind of "random subsystems decide unilaterally to not follow the > normal rules" is not acceptable. Not when the "arguments" for it have > absolutely nothing in particular to do with that subsystem. DM isn't special. Never intended it to come off like it is. I don't want slab merging but as a middle ground I made it so it is left to each subsystem to decide to use it or not. I clearly was the first to take issue with slab merging by calling it out with patches. In doing so Dave Chinner said he'd rather avoid using shared slabs in XFS. Pretty sure XFS isn't irrelvant yet. I'd wager there would be a flood of other subsystems opting to use SLAB_NO_MERGE. I can appreciate that as something the pro-slab-merge camp would like to avoid (the more that opt-out the more useless slab merging becomes). It is messed up that no _real_ justification was given for slab merging yet it was pushed on everyone. Thankfully it hasn't been unstable (which backs up your point) but I'd still love to understand how it is so beneficial. Is it a significant win? If so where? Or is it a microoptimization at the expense of both accounting and fault isolation? Mike -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Chinner Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) Date: Sat, 5 Sep 2015 10:36:18 +1000 Message-ID: <20150905003618.GB2562@devil.localdomain> References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> <20150904032607.GX1933@devil.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: Sender: owner-linux-mm@kvack.org To: Linus Torvalds Cc: Mike Snitzer , Christoph Lameter , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm List-Id: dm-devel.ids On Thu, Sep 03, 2015 at 08:51:09PM -0700, Linus Torvalds wrote: > On Thu, Sep 3, 2015 at 8:26 PM, Dave Chinner wrote: > > > > The double standard is the problem here. No notification, proof, > > discussion or review was needed to turn on slab merging for > > everyone, but you're setting a very high bar to jump if anyone wants > > to turn it off in their code. > > Ehh. You realize that almost the only load that is actually seriously > allocator-limited is networking? Of course I do - I've been following Jesper's work quite closely because we might be able to make use of the batch allocation mechanism in the XFS inode cache in certain workloads where we are burning through a million inode slab allocations a second... But again, you're bringing up justifications for a change that were not documented in the commit message for the change. It didn't even mention performance (just fragmentation and memory savings). If this was such a critical factor in making this decision, then why weren't such workloads and numbers provided with the commit? And why didn't someone from netowkring actually review the change and ack/test that it did actually do what it was supposed to? If you are going to make an assertion, then you damn well better provide numbers to go along with that assertion. What's you're phrase, Linus? "Numbers talk and BS walks?" Where are the numbers, Linus? Hmmmm? Indeed, with network slabs that hot, mixing them with random other slab caches could have a negative effect on performance by increasing contention on the slab over what the network load already brings. I learnt that lesson 12 years ago when optimisng the mbuf slab allocator in the Irix network stack to scale to >1Mpps through 16 GbE cards: It worked just fine until we started doing something with the data that the network was delivering and created more load on the shared slab.... But, I digress. I've been trying to explain why we shouldn't be merging slabs with shrinkers and you've shifted the goal posts rather than addressing the discussion at hand. > Really, Dave. You have absolutely nothing to back up your points with. > Merging is *not* some kind of "new" thing that was silently enabled > recently to take you by surprise. The key slab tha I monitor for fragmentation behaviour (the XFS inode slab) does not get merged. Ever. SLAB or SLUB. Because it has a *constructor*. Linus, if you bothered to read my previous comments in this discussion then you'd know this. I just want to flag to extend that behaviour to all the slab caches I actively manage with shrinkers, because slab merging does not benefit them the same way it does passive slabs. That's not hard to understand, nor is it a major issue for anyone. >From my perspective, Linus, you're way out of line. You are not engaging on a technical level - you're not even reading the arguments I've been presenting. You're just cherry-picking something mostly irrelelvant to the problem being discussed and going off at a tangent ranting and swearing and trying your best to be abusive. Your behaviour and bluster does not intimidate me, so please try to be a bit more civil and polite and engage properly on a technical level. -Dave. -- Dave Chinner dchinner@redhat.com -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sergey Senozhatsky Subject: Re: slab-nomerge (was Re: [git pull] device mapper changes for 4.3) Date: Sat, 5 Sep 2015 11:09:07 +0900 Message-ID: <20150905020907.GA1431@swordfish> References: <20150903005115.GA27804@redhat.com> <20150903060247.GV1933@devil.localdomain> <20150903122949.78ee3c94@redhat.com> <20150904063528.GA29320@swordfish> <20150904075945.GA31503@swordfish> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="gBBFr7Ir9EOA20Yy" Return-path: Content-Disposition: inline In-Reply-To: Sender: owner-linux-mm@kvack.org To: Linus Torvalds , Christoph Lameter Cc: Sergey Senozhatsky , Jesper Dangaard Brouer , Dave Chinner , Mike Snitzer , Pekka Enberg , Andrew Morton , David Rientjes , Joonsoo Kim , "dm-devel@redhat.com" , Alasdair G Kergon , Joe Thornber , Mikulas Patocka , Vivek Goyal , Sami Tolvanen , Viresh Kumar , Heinz Mauelshagen , linux-mm , Sergey Senozhatsky List-Id: dm-devel.ids --gBBFr7Ir9EOA20Yy Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On (09/04/15 07:11), Linus Torvalds wrote: > > > > But I went through the corresponding slabinfo (I track slabinfo too); and yes, > > zero unused objects. > > Ahh. I should have realized - the number you are actually tracking is > meaningless. The "unused objects" thing is not really tracked well. > > /proc/slabinfo ends up not showing the percpu queue state, so things > look "used" when they are really just on the percpu queues for that > slab.So the "unused" number you are tracking is not really meaningful, > and the zeroes you are seeing is just a symptom of that: slabinfo > isn't "exact" enough. > > So you should probably do the statistics on something that is more > meaningful: the actual number of pages that have been allocated (which > would be numslabs times pages-per-slab). Aha... Didn't know that, sorry. Christoph Lameter wrote: > Please use the slabinfo tool. What you see in /proc/slabinfo is generated > for slab compatibility and may not show useful numbers. > OK. I did another round of tests git clone git://sourceware.org/git/glibc.git make -j8 package (xz) rm -fr glibc >From slabinfo -T output Slabcaches : 91 Aliases : 118->69 Active: 65 Memory used: 60.0M # Loss : 13.2M MRatio: 28% # Objects : 162.4K # PartObj: 10.6K ORatio: 6% Per Cache Average Min Max Total --------------------------------------------------------- #Objects 2.4K 11 19.0K 162.4K #Slabs 108 1 1.8K 7.0K #PartSlab 34 0 1.6K 2.2K %PartSlab 7% 0% 86% 31% PartObjs 6 0 4.7K 10.6K % PartObj 3% 0% 33% 6% Memory 923.9K 8.1K 10.2M 60.0M Used 720.3K 8.0K 9.7M 46.8M Loss 203.6K 0 6.1M 13.2M Per Object Average Min Max --------------------------------------------- Memory 290 8 8.1K User 288 8 8.1K Loss 1 0 64 I took the "Memory used: 60.0M # Loss : 13.2M MRatio: 28%" line and generated 3 graphs: -- "Memory used" MM -- "Loss" LOSS -- "MRatio" RATION for "slab_nomerge = 0" and "slab_nomerge = 1". ... And those are sort of interesting. I was expecting to see more diverged behaviours. Attached. Please let me know if you want to see files with the numbers (slabinfo -T only). -ss --gBBFr7Ir9EOA20Yy Content-Type: image/png Content-Disposition: attachment; filename="glibc-RATIO-merge_vs_nomerge.png" Content-Transfer-Encoding: base64 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 --gBBFr7Ir9EOA20Yy Content-Type: image/png Content-Disposition: attachment; filename="glibc-LOSS-merge_vs_nomerge.png" Content-Transfer-Encoding: base64 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 5vksUs5kv26/7980X84c1fSjHPjsqKWlY6ZeWOr5IwsVPynu243cnzg8e/nC5ibf4fCRp1t+ 9t0tfcvTn+zzPnRb6G1rqTNLm5ztw7Nv4UmLn275m229tpHpty/kALCBMNkhTKF/ztvnjP/8 5X8/5BxGO3b79qCm/VzamVvkhaYOl5rcm679+6U+7bDq7vAm0yGsW+ILlt4vv7Kt3ht2duHX qhJyANhAmOxQPP9T+L9/Jjf68zr6IPPZkm9so3/T2/DTz+LHz8/Wd33ssO8fRTP3Sf83a575 CP0H39uTT5VnN74blTlT7XADMzfDDf9v7XMOnbbar9vmrXdomz1a7NDbVX58dRvLuD93fdlh tgnND2/Up/u2lr6vmd4ufSe9ezNlznzfz9qy8Nzs8rt712bXPllX+1y3SL/w2+v2g8eflDN8 fLq+fo2jRRcXnlQzLnruzTD5Zrt31Xzd41a92K6ZPrQPTH+BPPkBzs6hNrO8kAPABuKEnK8/ u8s7RM+ee+Z/X/eNezD49lPW//4sefrR/25ucwu7s8sv6O4dmn3ix8E240/6v1nzCp8sPxnS mMtlM58cD6udfP486eF04VVizuFwX9HhvqN3TTbX9/S92bvx3nF3M7P/e78zGQ/qfnhzO7Dv v9WHoeFWwFyZw6V3S3uxizu9i5vftd9bb8u75Rrape59OszU/3jdKBDNrKh/r13fXImH4d1B HYN1LlUz/530tzwq+kmKHNU+/bYn3+VsH5Z/+77+tup+ck/SHgCsJ07I2Q8/x765f6p42/t5 fDLb6i8581X3uslSh7mb7rknwxOPD9m7m8fHuMNP8rsP7/f3j/KbJYcfzI8+px+MMfRWOzNm sn/2+e7cC/rFtQsdxt/C45P+dpRnbm/l2SjAY6nv9D42nlt6uvLHz77fp8kDwzYObwb92w8/ up77KQx/Oo+PydtFHh0d/iB6QzG3NrZvwdE7cbjkeDDgMPynt/Dwf4feEqOlHy8a9HCmgIGZ 2gZlLiw9im/DL0Y70/2Xzn3bu2FLntUw+s4Po8JHr5v7todl9B7s/dSGhj/He+ULxS03dbLe /panTRglkNFGFle21K5Xqr0vfhi/YLCi4U97+DbcjRYBgBXFCTm7cQbpPn1/PHIYzmB06C/Z PTFY5JYrxku1nzXuD92+4mHy3G52P/uwa3eNHy/djf+s9/Z6DoOb/W2vebS+yV///f3b7q1t Zk9rdl9iebXTFXU7cf1vofdNjB8ZPP6NF5Y6jPv03fKTU1x2bw/CPNnwbe2D55s+3d4hXQ68 FTATXabbWd5jHiw12A8f70MepndGb7D+E5P3526mh4vDA/+jv+s8n12GmxzWvrTn/7MC/uPl y/8fPX5sz16wxe77Yf5HM3k3bmTy//xinBn9kljqyqbVApCxUCFneMzPPbbcY0q7Z9k6DJds dz53o0X246Xav9r75rb9Q71vnj/0EtV4F7pbR7drtrD3OI0N3ZjJddRkvL6ZlDPKaHML9bY8 MbvbPV3R7Lfw2FWe3S0f7Ygv+X53c7QH/kImmiz108ubzNew9OS+e3v0C9g1UbjtUVvA64nu myWHT493HZfujdc8efPtFju97q7nTAXTvd+Z7/Cwm6/uPwr4r5cvhuy5Iwx3i9/ZmpYr2nKr ve0s/JYa/pIbptTd8ntLxAFgI7FCzv3godFxMffDiB73ugd7h09MDQ/76q3rsB/sw9yPw9jf 77Unfo8P9ngcYDVKDL17Cwd0PAJU/5iP6fEs06NQDqPvbjd5wfi4k2Fvp7tHS9/CvSmPoPPY 1FyNu4lxepj5sTyeGJU1OD5nbvlHZ/Yzr5l8m+O1j16zVOZ9+G/a8MchlfvxOhdNI+aTpWZK nbxDnqx5rqm7UQ/H39Mqln5W0+dma3+/pP999dLr5n+rDB/8z03+b0WbbnVmQws/ztsjw5vJ 05u9zwCgEy3kvOKwcEbtD8x+WjocRdlmzoLZ1U5TzXCpH5cy6c748cXVHWY+YR+tZFDjQsJ4 8rqFrXY3bfxY3tEb/bSnP/thVY97g696tU6399oxdAAAfMpfDDkz++g/ziOzyy9Oa7Cm2dVO PvNc+lz/1Y0MRj1Gjz//eHXmE/aFFxwGS7z3WffopS/UN9xcb0XDqkZrHxW1VKaMAwCQsr8Z cnjFRoNRSZqNdAAA/E1hskOYQiPJaZffCQAAANkIkx3CFAoAAHxUmOwQplAAAOCjwmSHMIUC AAAfFSY7hCkUAAD4qDDZIUyhAADAR4XJDmEKBQAAPipMdghTKAAA8FFhskOYQgEAgI8Kkx3C FAoAAHxUmOwQplAAAOCjwmSHMIUCAAAfFSY7hCkUAAD4qDDZIUyhAADAR4XJDmEKBQAAPipM dghTKAAA8FFhskOYQgEAgI8Kkx3CFAoAAHxUmOwQplAAAOCjwmSHMIUCAAAfFSY7hCkUAAD4 qDDZIUyhAADAR4XJDmEKBQAAPipMdghTKAAA8FFhskOYQgEAgI8Kkx3CFAoAAHxUmOwQplAA AOCjwmSHMIUCAAAfFSY7hCkUAAD4qDDZIUyhAADAR4XJDmEKBQAAPiqh7HA6F8X5uPRsQoUC AAAJSyc7fEWcq7KafzqdQgEAgJQlkx2ORXGs669/z/PPJ1MoAACQtFSyQ1UUp+ttXRT17AKp FPoX6e129HY7ersdvd2O3m5Hb7ejt9vR2+2k0ttTUTZfnIvL7AKpFPoX6e129HY7ersdvd2O 3m5Hb7ejt9vR2+2k0ttL0U45cE87I6kU+hfp7Xb0djt6ux293Y7ebkdvt6O329Hb7aTS27I5 Wu12vNrsAqkU+hfp7Xb0djt6ux293Y7ebkdvt6O329Hb7aTS27I7Facqitn51VIp9C/S2+3o 7Xb0djt6ux293Y7ebkdvt6O320mlt4/5BoScX6e329Hb7ejtdvR2O3q7Hb3djt5uR2+3k0pv hZwP0tvt6O129HY7ersdvd2O3m5Hb7ejt9tJpbf9w9VmFygAAABe8YtB5pnzY+KB+dnVAAAA IulNIX3+bCUAAAAr+PZioAAAAJFU7cwD1WMGAgAAgMCORXHaVafS0WoAAMDfcG4mQihnJ5AG AAAI5/QVc8rjp6sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AICoTueiOB8/XcXfcSkeXw97q9NvOZ7LorxU3V29Xc/p2trzqXdfb1dVlfffCnq7mlPRqdsH 9HY99cXv200UfbdH9HZFtz9ml/pxV29Xc9sHO4b7nXBu/l8rq+8X5QVV8Qg5w97q9Du+dhMb 7f9FeruetntFObyvt6s5338r6O16LqOQo7crOg7zo96uZhJy9HZF3R+zy+Cu3q6gLofti9Lb r19lx7r++vf86Ur+huqxOzPqrU6/5ev/r2NV1ef2r67eruerb5e6qo7dHwa9Xdul6H4r6O2K zsXl1Lj9YdXbFZ1uvxSuv2/1dmWnu/L2G1dvV3S5tq+qv25O17t6u6KyKE9V9fWubT4NjdLb qn0v1PdPbPh/1fFc3HdnRr3V6becHp/WXv8n0tsVdaNjp+atq7drO91/K+jtmsqmfS29XVPZ /lJobvV2C6fb3qLerqn7nXC0n7C2Y3eox/nWxjC9PT3qvny2kr/g9BiB3o17q9NvuXQfENS3 /urteqr2w9ruC71d2ddb9tQdfK+3Kxr+PdXbFd3bV19OO73dhN+367v/MbOfsLpz95lSfdsZ C9PbS3eKw71G/l/1pb6HnGFvdfot5659u9tvMb1dT3U6NV+0b129XVdVFqfuTD29XVH/9Med 3q7q3r7RXb1dT7vTqLdr6j74aIYd9HZFj8+UYvW2fISz4umCvOjxl3fYW51+S12357M17dPb 1VXtEeJ6u7JrPu9+K+jtir7+nF7PGelmANPbFV2D+aUsznq7mWN7cILerul4PW9kdz3B9LTT 21WN2hemt2UXzu7DfLynH3L6vdXpdTSjoXq7sttEVd1R+Hq7otuBlo+Qo7er6eb/ao8G19sV ff0y0NtN3Xunt6vyvt3K/ZSBZjaSML3tjUClVlpQj5Az7K1Or6E6N1MU6u3KbiHnfGuj3q7p dHvDdr8V9HZFl+s7trqOQBZ+J6zsOhfssa5OZ73dyKU7d0Fv11Rd+iFHb1dUNb9vr6Pn1/aF 6W3CpQUl5Gzn+gusmYZdb9dW3XZorn3U2xXVTdeEnA2cbufE766fKV4/YtTbFfWufqG3W6jv rdPbFVXtNMf+lm2gu/jyMVbI6Q8yfbaSv2L+cDWdXsHxfkSV3m7icjtnUG9X1B6qPHe4mt6u pfa+XVs3g7TebuQxk47erqg3zfE1nOvtqq6n6V1Hc9pzcoL0tjcrXGpzIgT1+BkPe6vTb7pe bvfSfUagt1to3rt6u56qf3Hzs95uozkMXG9XdB4eYq+3K3sM5Ojtmkbnv+vtFpr2heltb+K3 5C5UGtMj5Ax7q9Pvqe8HUFzp7Xou5b1p4+m59fZN45Cjt1uovG/XdhmGHL1d2eXROb1d0eio Kb3dQjMvYJjeJnwJn6AeISfMxZIi+Gprv216u57j/R3rAmqrqxrXD26rSm/XVJfdpx7Nh4d6 u6Lj8LIXeruuqncdW71d0WgkR29XdCrvJwucdoF62/3P1v+fjnc8Qs6wtzr9luPw8wG9XU99 P9OpOY5Zb9fX/VbQ2xWV3e+E5gJPerui3gTHeru+Y+/EBb1d0aU73uPib9naukMs2zwTp7e3 iyZdZ+FMbYwpqt55V8Pe6vQ7iuJy6lzv6+16zl/Nrav6OhXv7feT3q7u/ltBb9dzvE8h3ezY 6O2KLkVxnUK6bD+g1dtVnfud09v13GZXq2/THPtbtrbzbea69jqrkXp7bo4X753vwDv6k0sM e6vT/29wbsOtgXq7mqrtXlG2n8Ho7dr605Ho7VqO3rfbOevtZqr74PmN3q7nOj/Rzam5r7fr qdredu/dOL09na/X/fp0FX/GYAa9YW91+r/Vk5Cjtys6ncuiPB979/V2Vb3fCnq7nvo2penx /mdVb1fUtE9vN3AaHdOjtyu6/TG7eN9uoDpeW/t46+otAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAsK6qKD5dAgAAwHqEHAAA4E8RcgAAgD9FyAEAAP4UIQcAAPiw07ksynPd v3fp7u2OZVGcj92dc1GUx6q58xVmqst12fZ+e6cNOcOVAgAA/Jqv4HJzmblXlc29surfaaJL UXQP3O7X7QuPt5AzXA0AAMCvuRTlqarqS5NV2nvnNp6Ut7tfueV8u1Mcq+pUNpHnK+Scr3Hn 1Dx5e7auj9dkM14pAADA7ynbHHIujtfhmCbA7I63eHJs734Fmer6z23Jqihuh68V1webJ5sX 3O7Vt4cHKwUAAPhFZXG63VZVdR2BOd4fvvQyynXM5tIde3Zshm7arHONNbfl20UvTcjprRQA AOAXfYWSy6mLImVRV41LUT5GeW7ObXBpU82uOxStmWngfmDabdRnsFIAAIDfdLlNJnA5Xb8u esprfOkFlXviaR/unryFnMei9e2r/koBAAB+VXU8l+0Mav2QU4wueVP8JOT0VwoAAPDrqmM5 OT7tkWNu59ZMD1frhZzR4WqDlQIAAPyiYzthQNWcS3NqH65PdW/igetEAtOJB/oh5zyYeGCw UgAAgF9UtjHkNj5z6o4v+7p3+nYK6X7IGU8h3VspAADAL2qu23m9xud1oOZ2Sc/qek3P63Fm VXMx0NP9YqCnqn8x0H7IqbqLgZbNiFB/pQAAAL/nmk6a2dSq/r1zMy5TzjxXNmffDEPObQjn 6jbxwHClAAAAv+k6D1p5Pt3vFb17t7kDzt0VQr/uFOWxzS2jkLOrLl+LXqr28eFKAQAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjaP89oGPrbV6RH AAAAAElFTkSuQmCC --gBBFr7Ir9EOA20Yy Content-Type: image/png Content-Disposition: attachment; filename="glibc-MM-merge_vs_nomerge.png" Content-Transfer-Encoding: base64 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 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAZKdDlh32357iVxyz7uvhylrnD+wPRVYc8/amlZ3M 6bKyh1PvtqWdUF5cfyFY2YmcslbZ3GFlp1Ie/aKdQ9ZX3WNpJ1P9O+xYdjet7ESq46593t6M urKH+n93Rf7tQX5CnnWRM1xZ6/x35yPFWvO/KCs7mWbxsmJ429JO5HD9hWBlp3K8iRwrO5n9 sB6t7FTuIsfSTqb9d9hxcNPKfqwshosXdWXPv9X2ZXn+ePj2JL8g745pblbWOn/g/L+1fZ6X h+ZfvlZ2MudlO5Z5vm//DWFpp3Vs/7utlZ3OITueavnlppWdzKn6dXD5RZtfblrZyZyuiupX raWdzPGyeHl5/lRdj2BlJ1NkxSnPz39j6/8EGnVl8+ZvRnn9jzf8Vb4/XM9F366sdf7AqftP tpf/QVnZ6bQnx07131tLO63T9ReClZ1OkZ16t6zsdIrm10H92crO4FQdMVra6bS/DvaODqa1 b6/vOFSLGHZlT90/x/G7k8R36s5Fb25X1jp/4Nj+x4KyWl0rO5m8+U+27ReWdlLnv6+n9gp8 KzuZ4b9WrexkrotXHk8bKzsHv2indv13mKODiR3a/5hUVgdgYVf22L7M4Tozf5WfldfIGa6s df7AoV28TfX7zMpOJj9df41Vf28t7ZTyIju1L9KzspPpv+5xY2UndF28m5tWdjLNgaOlnU77 3zzqEw9WdjLdf0yKvbJFNjzK4TPdv4CHK2udP1CWefNFtXhWdmp5c6G4pZ3UJc7bXwhWdjLn f6teXjXS7gFmZSdzifJjkR2OeXuzvt/KTmXfXJRgaaezv7xyZHN5XellFa3sZG4WL+zKFm2s XU/68Yl+5PRX1jpPoT4zamWndez2rbO0E6qusuwix8pOpN0BrLko3MpO5vxrwMrO6bp0lnZC /tLO4/oygXojkrAr2zsjtfZRQ+giZ7iy1vlz+aHertDKTquKnEO1ipZ2Oqfqb2v7C8HKTuZ4 +dtabfpTrZ2VncxlQ9h9mZ8OVnYex/b1C5Z2OvmxHzlWdjJ5/Yv2ctr8snhhVzbQqCGInLlc fpXVW7Jb2Ynl1WHNZRkt7WTKes1EzuROx+ZCiaL6L41WdjK9t8CwsjMorytnaSeTNxsd+1fY 5Np3Xd7Hjpz+SafvTvIbxi9Xs84f218vqbKyczhWLx+0tJNprlkeu1zNyk6j9Hd2Wu0O0lZ2 Ht0OOpZ2Mr2Nji9lbmUndHmF3uVsTvOanKAr29slbu17JITQ/f/4cGWt80cub717zJsbVnYG 9V9cSzuVvP8O5wcrO4f6anArO5nD8Dp7Kzut7kSOpZ3OzSvgrez06sULu7K9jeBW/8alEXSR M1xZ6/yJ8nodxYWVncyxuK7Z7e7clvYjt5FjZaeX+zs7reMwcqzstI7dwlnaydxcN2Vlp1fv CRh2ZQO9pU8IXeSEfeuk9Tkvan/RrOxk9te/rt5JbWJ57fJfb/Pcyk6nLNr/4FH/N0QrO5n9 8L0vrOyk8t6b2FraydycybGykzkV1xcIhH5v4PZ/eP3/AfJ3XeQMV9Y6f2A//G8FVnYy5fWF TvUFzZZ2au0vBCs7maL9dVC/uZOVnUze7XBsZSe37714wdJO5the5XH0r7BptZdXNj0Td2Wr t1C6bMe59nNOMfRehTVcWev8d1l2PLUut63sZA7ntS3z8rIdb/WrytJO7PoLwcpOZX/dQro+ urGykzlm2WUL6aL5r7RWdkqH/sJZ2qlUu6uV1UbH/hU2rUO1b13zLquRV/ZQXzbee80Df9ff amK4stb5rwYvb8gv91jZqeTN4mVF859jLO20+juRWNlp7P2dncvBys4lv541r1jaqVx2Jere J8fKTidvVrb9ext3ZS8bjBf714/jDYP99IYra53/qLyLHCs7ndOhyIrDvnfb0k6o9wvByk6l rHY23eftbSs7mXrx8uHN8Vv8l9PNdT2WdjLVv8OOeXfTyk4j318Wtvtra2UBAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAeeRZ9u0RAAAApiNyAACAnyJyAACAnyJyAACAnyJy AACALzsdiqw4lP1bx/bWZl9k2WHf3jhkWbHP6xvnmMmPl8c2t5sbTeQMnxQAAGAx53CpHEdu 5UV9q8j7N+p0ybL2jup22fzgvoqc4dMAAAAs5pgVpzwvj3WrNLcOTZ4U1c1ztxyqG9k+z09F nTznyDlccudUf7P6blnuL2Vz+6QAAADLKZoOOWT7y+mYOmA2+ypP9s3Nc8jklw/VI/Msqy5f yy531t+sf6C6VVZ3D54UAABgQUV2qj7neX45A7O/3n3sNcrlnM2xvfZsX5+6aVrnkjXV45uH HuvI6T0pAADAgs5RcjzlzY0iK/PaMSu6szyVQxMuTdVs2kvR6p0GrhemVWd9Bk8KAACwpGO1 mcCxKpisp7jkS9497lo8zd3tN6vI6R5aVl/1nxQAAGBR+f5QNDuo9SMnu3nLm+x/Iqf/pAAA AIvL98Xd9Wldx1Svrbm/XK3+5tjlaoMnBQAAWNC+2TAgr19L015gVp7K3sYDl40E7jceyNsf 3PQeWm08MHhSAACABRVNhlTnZ07t9WXnW6eXW0jXD81Ht5DuPSkAAMCC6vftvLzH5+VETfWW nvnlPT0v15nl9ZuBnq5voa4BCAAAAJpJREFUBnoavBlo9amJnLx9M9CiPiPUf1IAAIDlXOqk 3k0t7986XG5tymLke0X96pth5FSncC6qjQeGTwoAALCkyz5oxeF0vZX1blV7Bxzadwg938iK fV7fuImcTX48P/SYN/cPnxQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAACAJP0DIRy3w0fihJcAAAAASUVORK5CYII= --gBBFr7Ir9EOA20Yy-- -- 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: email@kvack.org