Re: Mainline kernel OLTP performance update

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Pekka Enberg <penberg@...>
Cc: Christoph Lameter <cl@...>, Andi Kleen <andi@...>, Matthew Wilcox <matthew@...>, Nick Piggin <nickpiggin@...>, Andrew Morton <akpm@...>, <netdev@...>, Stephen Rothwell <sfr@...>, <matthew.r.wilcox@...>, <chinang.ma@...>, <linux-kernel@...>, <sharad.c.tripathi@...>, <arjan@...>, <suresh.b.siddha@...>, <harita.chilukuri@...>, <douglas.w.styner@...>, <peter.xihong.wang@...>, <hubert.nueckel@...>, <chris.mason@...>, <srostedt@...>, <linux-scsi@...>, <andrew.vasquez@...>, <anirban.chakraborty@...>, Ingo Molnar <mingo@...>
Date: Thursday, February 12, 2009 - 1:22 am

On Sat, 2009-01-24 at 09:36 +0200, Pekka Enberg wrote:
Pekka,

Sorry for the late update.
The default order of kmalloc-8192 on 2*4 stoakley is really an issue of calculate_order.


slab_size	order		name
-------------------------------------------------
4096            3               sgpool-128
8192            2               kmalloc-8192
16384           3               kmalloc-16384

kmalloc-8192's default order is smaller than sgpool-128's.

On 4*4 tigerton machine, a similiar issue appears on another kmem_cache.

Function calculate_order uses 'min_objects /= 2;' to shrink. Plus size calculation/checking
in slab_order, sometimes above issue appear.

Below patch against 2.6.29-rc2 fixes it.

I checked the default orders of all kmem_cache and they don't become smaller than before. So
the patch wouldn't hurt performance.

Signed-off-by Zhang Yanmin <yanmin.zhang@linux.intel.com>

---

diff -Nraup linux-2.6.29-rc2/mm/slub.c linux-2.6.29-rc2_slubcalc_order/mm/slub.c
--- linux-2.6.29-rc2/mm/slub.c	2009-02-11 00:49:48.000000000 -0500
+++ linux-2.6.29-rc2_slubcalc_order/mm/slub.c	2009-02-12 00:08:24.000000000 -0500
@@ -1856,6 +1856,7 @@ static inline int calculate_order(int si
 	min_objects = slub_min_objects;
 	if (!min_objects)
 		min_objects = 4 * (fls(nr_cpu_ids) + 1);
+	min_objects = min(min_objects, (PAGE_SIZE << slub_max_order)/size);
 	while (min_objects > 1) {
 		fraction = 16;
 		while (fraction >= 4) {
@@ -1865,7 +1866,7 @@ static inline int calculate_order(int si
 				return order;
 			fraction /= 2;
 		}
-		min_objects /= 2;
+		min_objects --;
 	}
 
 	/*


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: Mainline kernel OLTP performance update, Nick Piggin, (Fri Jan 16, 2:46 am)
Re: Mainline kernel OLTP performance update, Rick Jones, (Fri Jan 16, 2:11 pm)
Re: Mainline kernel OLTP performance update, Nick Piggin, (Mon Jan 19, 3:43 am)
Re: Mainline kernel OLTP performance update, Rick Jones, (Mon Jan 19, 6:19 pm)
Re: Mainline kernel OLTP performance update, Andrew Morton, (Fri Jan 16, 3:00 am)
Re: Mainline kernel OLTP performance update, Nick Piggin, (Fri Jan 16, 4:59 am)
Re: Mainline kernel OLTP performance update, Nick Piggin, (Fri Jan 16, 3:25 am)
Re: Mainline kernel OLTP performance update, Matthew Wilcox, (Fri Jan 16, 2:55 am)
Re: Mainline kernel OLTP performance update, Zhang, Yanmin, (Fri Jan 16, 3:53 am)
Re: Mainline kernel OLTP performance update, Andi Kleen, (Fri Jan 16, 6:20 am)
Re: Mainline kernel OLTP performance update, Zhang, Yanmin, (Tue Jan 20, 1:16 am)
Re: Mainline kernel OLTP performance update, Christoph Lameter, (Wed Jan 21, 7:58 pm)
Re: Mainline kernel OLTP performance update, Zhang, Yanmin, (Thu Jan 22, 4:36 am)
Re: Mainline kernel OLTP performance update, Pekka Enberg, (Thu Jan 22, 5:15 am)
Re: Mainline kernel OLTP performance update, Zhang, Yanmin, (Thu Jan 22, 5:28 am)
Re: Mainline kernel OLTP performance update, Pekka Enberg, (Thu Jan 22, 5:47 am)
Re: Mainline kernel OLTP performance update, Zhang, Yanmin, (Thu Jan 22, 11:02 pm)
Re: Mainline kernel OLTP performance update, Nick Piggin, (Fri Jan 23, 4:33 am)
Re: Mainline kernel OLTP performance update, Zhang, Yanmin, (Fri Jan 23, 5:02 am)
Re: Mainline kernel OLTP performance update, Pekka Enberg, (Fri Jan 23, 2:52 am)
Re: Mainline kernel OLTP performance update, Pekka Enberg, (Fri Jan 23, 4:06 am)
Re: Mainline kernel OLTP performance update, Zhang, Yanmin, (Fri Jan 23, 4:30 am)
Re: Mainline kernel OLTP performance update, Pekka Enberg, (Fri Jan 23, 5:46 am)
Re: Mainline kernel OLTP performance update, Christoph Lameter, (Fri Jan 23, 11:22 am)
Re: Mainline kernel OLTP performance update, Zhang, Yanmin, (Fri Jan 23, 10:55 pm)
Re: Mainline kernel OLTP performance update, Christoph Lameter, (Mon Jan 26, 1:36 pm)
Re: Mainline kernel OLTP performance update, Zhang, Yanmin, (Sat Jan 31, 10:52 pm)
Re: Mainline kernel OLTP performance update, Pekka Enberg, (Sat Jan 24, 3:36 am)
Re: Mainline kernel OLTP performance update, Zhang, Yanmin, (Thu Feb 12, 1:22 am)
Re: Mainline kernel OLTP performance update, Zhang, Yanmin, (Thu Feb 12, 1:47 am)
Re: Mainline kernel OLTP performance update, Pekka Enberg, (Thu Feb 12, 12:03 pm)
Re: Mainline kernel OLTP performance update, Christoph Lameter, (Thu Feb 12, 11:25 am)
Re: Mainline kernel OLTP performance update, Pekka Enberg, (Thu Feb 12, 12:07 pm)
Re: Mainline kernel OLTP performance update, Pekka Enberg, (Fri Jan 23, 11:31 am)
Re: Mainline kernel OLTP performance update, Christoph Lameter, (Fri Jan 23, 11:55 am)
Re: Mainline kernel OLTP performance update, Pekka Enberg, (Fri Jan 23, 12:01 pm)
Re: Mainline kernel OLTP performance update, Pekka Enberg, (Fri Jan 23, 4:40 am)
Re: Mainline kernel OLTP performance update, Nick Piggin, (Fri Jan 16, 3:06 am)