[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1345045084-7292-1-git-send-email-js1304@gmail.com>
Date: Thu, 16 Aug 2012 00:38:04 +0900
From: Joonsoo Kim <js1304@...il.com>
To: Pekka Enberg <penberg@...nel.org>
Cc: linux-kernel@...r.kernel.org, linux-mm@...ck.org,
Joonsoo Kim <js1304@...il.com>,
Christoph Lameter <cl@...ux.com>,
David Rientjes <rientjes@...gle.com>
Subject: [PATCH] slub: try to get cpu partial slab even if we get enough objects for cpu freelist
s->cpu_partial determine the maximum number of objects kept
in the per cpu partial lists of a processor. Currently, it is used for
not only per cpu partial list but also cpu freelist. Therefore
get_partial_node() doesn't work properly according to our first intention.
Fix it as forcibly assigning 0 to objects count when we get for cpu freelist.
Signed-off-by: Joonsoo Kim <js1304@...il.com>
Cc: Christoph Lameter <cl@...ux.com>
Cc: David Rientjes <rientjes@...gle.com>
diff --git a/mm/slub.c b/mm/slub.c
index efce427..88dca1d 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -1550,7 +1550,12 @@ static void *get_partial_node(struct kmem_cache *s,
c->page = page;
stat(s, ALLOC_FROM_PARTIAL);
object = t;
- available = page->objects - page->inuse;
+
+ /*
+ * We don't want to stop without trying to get
+ * cpu partial slab. So, forcibly set 0 to available
+ */
+ available = 0;
} else {
available = put_cpu_partial(s, page, 0);
stat(s, CPU_PARTIAL_NODE);
--
1.7.9.5
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists