On Thu, 2011-09-15 at 13:48 +0800, Pekka Enberg wrote: > On Wed, Sep 7, 2011 at 4:03 AM, Alex,Shi <alex.shi@xxxxxxxxx> wrote: > > Unfreeze_partials may try to discard slab page, the discarding condition > > should be 'when node partials number > minimum partial number setting', > > not '<' in current code. > > > > This patch base on penberg's tree's 'slub/partial' head. > > > > git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6.git > > > > Signed-off-by: Alex Shi <alex.shi@xxxxxxxxx> > > > > --- > > mm/slub.c | 2 +- > > 1 files changed, 1 insertions(+), 1 deletions(-) > > > > diff --git a/mm/slub.c b/mm/slub.c > > index b351480..66a5b29 100644 > > --- a/mm/slub.c > > +++ b/mm/slub.c > > @@ -1954,7 +1954,7 @@ static void unfreeze_partials(struct kmem_cache *s) > > > > new.frozen = 0; > > > > - if (!new.inuse && (!n || n->nr_partial < s->min_partial)) > > + if (!new.inuse && (!n || n->nr_partial > s->min_partial)) > > m = M_FREE; > > else { > > struct kmem_cache_node *n2 = get_node(s, > > Can you please resend the patch with Christoph's ACK and a better > explanation why the condition needs to be flipped. A reference to > commit 81107188f123e3c2217ac2f2feb2a1147904c62f ("slub: Fix partial > count comparison confusion") is probably sufficient. > > P.S. Please use the penberg@xxxxxxxxxxxxxx email address for now. > > Pekka Is the following OK? Pekka. :) ========== From: Alex Shi <alex.shi@xxxxxxxxx> Date: Tue, 6 Sep 2011 14:46:01 +0800 Subject: [PATCH ] Discard slab page when node partial > mininum partial number Unfreeze_partials will try to discard empty slab pages when the slab node partial number is greater than s->min_partial, not less than s->min_partial. Otherwise the empty slab page will keep growing and eat up all system memory. Signed-off-by: Alex Shi <alex.shi@xxxxxxxxx> Acked-by: Christoph Lameter <cl@xxxxxxxxx> --- mm/slub.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/mm/slub.c b/mm/slub.c index 1348c09..492beab 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -1953,7 +1953,7 @@ static void unfreeze_partials(struct kmem_cache *s) new.frozen = 0; - if (!new.inuse && (!n || n->nr_partial < s->min_partial)) + if (!new.inuse && (!n || n->nr_partial > s->min_partial)) m = M_FREE; else { struct kmem_cache_node *n2 = get_node(s, -- 1.7.0 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>