linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Rientjes <rientjes@google.com>
To: Christoph Lameter <cl@linux-foundation.org>
Cc: Pekka Enberg <penberg@cs.helsinki.fi>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	Nick Piggin <npiggin@suse.de>
Subject: Re: [S+Q2 00/19] SLUB with queueing (V2) beats SLAB netperf TCP_RR
Date: Wed, 14 Jul 2010 15:26:33 -0700 (PDT)	[thread overview]
Message-ID: <alpine.DEB.2.00.1007141518030.17291@chino.kir.corp.google.com> (raw)
In-Reply-To: <20100709190706.938177313@quilx.com>

On Fri, 9 Jul 2010, Christoph Lameter wrote:

> SLUB+Q also wins against SLAB in netperf:
> 
> Script:
> 
> #!/bin/bash
> 
> TIME=60  # seconds
> HOSTNAME=localhost       # netserver
> 
> NR_CPUS=$(grep ^processor /proc/cpuinfo | wc -l)
> echo NR_CPUS=$NR_CPUS
> 
> run_netperf() {
> for i in $(seq 1 $1); do
> netperf -H $HOSTNAME -t TCP_RR -l $TIME &
> done
> }
> 
> ITERATIONS=0
> while [ $ITERATIONS -lt 12 ]; do
> RATE=0
> ITERATIONS=$[$ITERATIONS + 1]   
> THREADS=$[$NR_CPUS * $ITERATIONS]
> RESULTS=$(run_netperf $THREADS | grep -v '[a-zA-Z]' | awk '{ print $6 }')
> 
> for j in $RESULTS; do
> RATE=$[$RATE + ${j/.*}]
> done
> echo threads=$THREADS rate=$RATE
> done
> 
> 
> Dell Dual Quad Penryn on Linux 2.6.35-rc4
> 
> Loop counts: Larger is better.
> 
> Threads		SLAB		SLUB+Q		%
>  8		690869		714788		+ 3.4
> 16		680295		711771		+ 4.6
> 24		672677		703014		+ 4.5
> 32		676780		703914		+ 4.0
> 40		668458		699806		+ 4.6
> 48		667017		698908		+ 4.7
> 56		671227		696034		+ 3.6
> 64		667956		696913		+ 4.3
> 72		668332		694931		+ 3.9
> 80		667073		695658		+ 4.2
> 88		682866		697077		+ 2.0
> 96		668089		694719		+ 3.9
> 

I see you're using my script for collecting netperf TCP_RR benchmark data, 
thanks very much for looking into this workload for slab allocator 
performance!

There are a couple differences between how you're using it compared to how 
I showed the initial regression between slab and slub, however: you're 
using localhost for your netserver which isn't representative of a real 
networking round-robin workload and you're using a smaller system with 
eight cores.  We never measured a _significant_ performance problem with 
slub compared to slab with four or eight cores, the problem only emerges 
on larger systems.

When running this patchset on two (client and server running 
netperf-2.4.5) four 2.2GHz quad-core AMD processors with 64GB of memory, 
here's the results:

		threads	SLAB	SLUB+Q	diff
		16	205580	179109	-12.9%
		32	264024	215613	-18.3%
		48	286175	237036	-17.2%
		64	305309	253222	-17.1%
		80	308248	243848	-20.9%
		96	299845	243848	-18.7%
		112	305560	259427	-15.1%
		128	312668	263803	-15.6%
		144	329671	271335	-17.7%
		160	318737	280290	-12.1%
		176	325295	287918	-11.5%
		192	333356	287995	-13.6%

If you'd like to add statistics to your patchset that are enabled with 
CONFIG_SLUB_STATS, I'd be happy to run it on this setup and collect more 
data for you.

  parent reply	other threads:[~2010-07-14 22:26 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-09 19:07 [S+Q2 00/19] SLUB with queueing (V2) beats SLAB netperf TCP_RR Christoph Lameter
2010-07-09 19:07 ` [S+Q2 01/19] Bugfix for semop() not reporting successful operation Christoph Lameter
2010-07-09 19:07 ` [S+Q2 02/19] percpu: make @dyn_size always mean min dyn_size in first chunk init functions Christoph Lameter
2010-07-09 19:07 ` [S+Q2 03/19] percpu: allow limited allocation before slab is online Christoph Lameter
2010-07-09 19:07 ` [S+Q2 04/19] slub: Use a constant for a unspecified node Christoph Lameter
2010-07-09 19:07 ` [S+Q2 05/19] SLUB: Constants need UL Christoph Lameter
2010-07-09 19:07 ` [S+Q2 06/19] slub: Check kasprintf results in kmem_cache_init() Christoph Lameter
2010-07-14 22:16   ` David Rientjes
2010-07-09 19:07 ` [S+Q2 07/19] slub: Allow removal of slab caches during boot Christoph Lameter
2010-07-14 23:48   ` David Rientjes
2010-07-19  0:07     ` Benjamin Herrenschmidt
2010-07-19 16:39       ` Christoph Lameter
2010-07-31  9:41         ` Pekka Enberg
2010-08-02 15:36           ` Christoph Lameter
2010-08-03  4:32             ` Pekka Enberg
2010-07-09 19:07 ` [S+Q2 08/19] slub: Use kmem_cache flags to detect if slab is in debugging mode Christoph Lameter
2010-07-09 19:07 ` [S+Q2 09/19] slub: discard_slab_unlock Christoph Lameter
2010-07-09 19:07 ` [S+Q2 10/19] slub: remove dynamic dma slab allocation Christoph Lameter
2010-07-09 19:07 ` [S+Q2 11/19] slub: Remove static kmem_cache_cpu array for boot Christoph Lameter
2010-07-09 19:07 ` [S+Q2 12/19] slub: Dynamically size kmalloc cache allocations Christoph Lameter
2010-07-09 19:07 ` [S+Q2 13/19] slub: Extract hooks for memory checkers from hotpaths Christoph Lameter
2010-07-09 19:07 ` [S+Q2 14/19] slub: Move gfpflag masking out of the hotpath Christoph Lameter
2010-07-09 19:07 ` [S+Q2 15/19] SLUB: Add SLAB style per cpu queueing Christoph Lameter
2010-07-09 19:07 ` [S+Q2 16/19] slub: Resize the new cpu queues Christoph Lameter
2010-07-09 19:07 ` [S+Q2 17/19] SLUB: Get rid of useless function count_free() Christoph Lameter
2010-07-09 19:07 ` [S+Q2 18/19] SLUB: Remove MAX_OBJS limitation Christoph Lameter
2010-07-09 19:07 ` [S+Q2 19/19] slub: Drop allocator announcement Christoph Lameter
2010-07-10 19:56 ` [S+Q2 00/19] SLUB with queueing (V2) beats SLAB netperf TCP_RR Heinz Diehl
2010-07-12 15:11   ` Christoph Lameter
2010-07-12 16:39     ` Heinz Diehl
2010-07-12 17:00       ` Christoph Lameter
2010-07-13 13:56         ` Heinz Diehl
2010-07-14  2:01           ` Christoph Lameter
2010-07-14 11:51             ` Tejun Heo
2010-07-14 14:25             ` Heinz Diehl
2010-07-14 20:22             ` David Rientjes
2010-07-14 11:46     ` Tejun Heo
2010-07-14 22:26 ` David Rientjes [this message]
2010-07-15 20:17   ` Christoph Lameter
2010-07-15 20:30     ` David Rientjes
2010-07-14 23:52 ` David Rientjes
2010-07-16  8:23   ` Pekka Enberg
2010-07-16  9:02     ` David Rientjes
2010-07-19  0:16       ` Benjamin Herrenschmidt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.DEB.2.00.1007141518030.17291@chino.kir.corp.google.com \
    --to=rientjes@google.com \
    --cc=cl@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=npiggin@suse.de \
    --cc=penberg@cs.helsinki.fi \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).