All of lore.kernel.org
 help / color / mirror / Atom feed
* [S+Q 00/16] SLUB with Queueing beats SLAB in hackbench
@ 2010-06-25 21:20 Christoph Lameter
  2010-06-25 21:20 ` [S+Q 01/16] [PATCH] ipc/sem.c: Bugfix for semop() not reporting successful operation Christoph Lameter
                   ` (16 more replies)
  0 siblings, 17 replies; 72+ messages in thread
From: Christoph Lameter @ 2010-06-25 21:20 UTC (permalink / raw)
  To: Pekka Enberg; +Cc: linux-mm, Nick Piggin, Matt Mackall

The following patchset cleans some pieces up and then equips SLUB with
per cpu queues that work similar to SLABs queues. With that approach
SLUB wins in hackbench:

#!/bin/bash 
uname -a
echo "./hackbench 100 process 200000"
./hackbench 100 process 200000
echo "./hackbench 100 process 20000"
./hackbench 100 process 20000
echo "./hackbench 100 process 20000"
./hackbench 100 process 20000
echo "./hackbench 100 process 20000"
./hackbench 100 process 20000
echo "./hackbench 10 process 20000"
./hackbench 10 process 20000
echo "./hackbench 10 process 20000"
./hackbench 10 process 20000
echo "./hackbench 10 process 20000"
./hackbench 10 process 20000
echo "./hackbench 1 process 20000"
./hackbench 1 process 20000
echo "./hackbench 1 process 20000"
./hackbench 1 process 20000
echo "./hackbench 1 process 20000"
./hackbench 1 process 20000

Procs	NR		SLAB	SLUB	SLUB+Queuing
----------------------------------------------------
100	200000		2741.3	2764.7	2231.9
100	20000		279.3	270.3	219.0
100	20000		278.0	273.1	219.2
100	20000		279.0	271.7	218.8
10 	20000		34.0	35.6	28.8
10	20000		30.3	35.2	28.4
10	20000		32.9	34.6	28.4
1	20000		6.4	6.7	6.5
1	20000		6.3	6.8	6.5
1	20000		6.4	6.9	6.4


SLUB+Q is a merging of SLUB with some queuing concepts from SLAB and a
new way of managing objects in the slabs using bitmaps. It uses a percpu
queue so that free operations can be properly buffered and a bitmap for
managing the free/allocated state in the slabs. It is slightly more
inefficient than SLUB (due to the need to place large bitmaps --sized
a few words--in some slab pages if there are more than BITS_PER_LONG
objects in a slab) but in general does not increase space use too much.

The SLAB scheme of not touching the object during management is adopted.
SLUB+Q can efficiently free and allocate cache cold objects without
causing cache misses.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 72+ messages in thread

end of thread, other threads:[~2010-07-31  9:39 UTC | newest]

Thread overview: 72+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-06-25 21:20 [S+Q 00/16] SLUB with Queueing beats SLAB in hackbench Christoph Lameter
2010-06-25 21:20 ` [S+Q 01/16] [PATCH] ipc/sem.c: Bugfix for semop() not reporting successful operation Christoph Lameter
2010-06-28  2:17   ` KAMEZAWA Hiroyuki
2010-06-28 16:45     ` Manfred Spraul
2010-06-28 23:58       ` KAMEZAWA Hiroyuki
2010-06-28 16:48   ` Pekka Enberg
2010-06-28 16:48     ` Pekka Enberg
2010-06-29 15:42     ` Christoph Lameter
2010-06-29 15:42       ` Christoph Lameter
2010-06-29 19:08       ` Andrew Morton
2010-06-30 19:38         ` Manfred Spraul
2010-06-30 19:38           ` Manfred Spraul
2010-06-30 19:51           ` Andrew Morton
2010-06-30 19:51             ` Andrew Morton
2010-06-25 21:20 ` [S+Q 02/16] [PATCH 1/2] percpu: make @dyn_size always mean min dyn_size in first chunk init functions Christoph Lameter
2010-06-27  5:06   ` David Rientjes
2010-06-27  8:21     ` Tejun Heo
2010-06-27 16:57       ` [S+Q 02/16] [PATCH 1/2 UPDATED] " Tejun Heo
2010-06-27 19:25         ` David Rientjes
2010-06-27 19:24       ` [S+Q 02/16] [PATCH 1/2] " David Rientjes
2010-06-29 15:36     ` Christoph Lameter
2010-06-25 21:20 ` [S+Q 03/16] [PATCH 2/2] percpu: allow limited allocation before slab is online Christoph Lameter
2010-06-25 21:20 ` [S+Q 04/16] slub: Use a constant for a unspecified node Christoph Lameter
2010-06-28  2:25   ` KAMEZAWA Hiroyuki
2010-06-29 15:38     ` Christoph Lameter
2010-06-25 21:20 ` [S+Q 05/16] SLUB: Constants need UL Christoph Lameter
2010-06-26 23:31   ` David Rientjes
2010-06-28  2:27   ` KAMEZAWA Hiroyuki
2010-06-25 21:20 ` [S+Q 06/16] slub: Use kmem_cache flags to detect if slab is in debugging mode Christoph Lameter
2010-06-26 23:31   ` David Rientjes
2010-06-25 21:20 ` [S+Q 07/16] slub: discard_slab_unlock Christoph Lameter
2010-06-26 23:34   ` David Rientjes
2010-07-06 20:44     ` Christoph Lameter
2010-06-25 21:20 ` [S+Q 08/16] slub: remove dynamic dma slab allocation Christoph Lameter
2010-06-26 23:52   ` David Rientjes
2010-06-29 15:31     ` Christoph Lameter
2010-06-28  2:33   ` KAMEZAWA Hiroyuki
2010-06-29 15:41     ` Christoph Lameter
2010-06-30  0:26       ` KAMEZAWA Hiroyuki
2010-06-25 21:20 ` [S+Q 09/16] [percpu] make allocpercpu usable during early boot Christoph Lameter
2010-06-26  8:10   ` Tejun Heo
2010-06-26 23:53     ` David Rientjes
2010-06-29 15:15     ` Christoph Lameter
2010-06-29 15:30       ` Tejun Heo
2010-07-06 20:41         ` Christoph Lameter
2010-06-26 23:38   ` David Rientjes
2010-06-29 15:26     ` Christoph Lameter
2010-06-28 17:03   ` Pekka Enberg
2010-06-29 15:45     ` Christoph Lameter
2010-07-01  6:23       ` Pekka Enberg
2010-07-06 14:32         ` Christoph Lameter
2010-07-31  9:39           ` Pekka Enberg
2010-06-25 21:20 ` [S+Q 10/16] slub: Remove static kmem_cache_cpu array for boot Christoph Lameter
2010-06-27  0:02   ` David Rientjes
2010-06-29 15:35     ` Christoph Lameter
2010-06-25 21:20 ` [S+Q 11/16] slub: Dynamically size kmalloc cache allocations Christoph Lameter
2010-06-25 21:20 ` [S+Q 12/16] SLUB: Add SLAB style per cpu queueing Christoph Lameter
2010-06-26  2:32   ` Nick Piggin
2010-06-28 10:19     ` Christoph Lameter
2010-06-25 21:20 ` [S+Q 13/16] SLUB: Resize the new cpu queues Christoph Lameter
2010-06-25 21:20 ` [S+Q 14/16] SLUB: Get rid of useless function count_free() Christoph Lameter
2010-06-25 21:20 ` [S+Q 15/16] SLUB: Remove MAX_OBJS limitation Christoph Lameter
2010-06-25 21:20 ` [S+Q 16/16] slub: Drop allocator announcement Christoph Lameter
2010-06-26  2:24 ` [S+Q 00/16] SLUB with Queueing beats SLAB in hackbench Nick Piggin
2010-06-28  6:18   ` Pekka Enberg
2010-06-28 10:12     ` Christoph Lameter
2010-06-28 15:18       ` Pekka Enberg
2010-06-28 18:54         ` David Rientjes
2010-06-29 15:23           ` Christoph Lameter
2010-06-29 15:55             ` Mike Travis
2010-06-29 15:21         ` Christoph Lameter
2010-06-28 14:46     ` Matt Mackall

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.