Index of /apps/kernbench/kernbench-0.50

Icon  Name                    Last modified      Size  Description
[DIR] Parent Directory - [TXT] COPYING 18-Aug-2012 23:17 18K [TXT] README 18-Aug-2012 23:17 3.5K [   ] kernbench 18-Aug-2012 23:17 5.6K
Kernbench v0.50

What is this?

This is a cpu throughput benchmark originally devised and used by Martin J.
Bligh. It is designed to compare kernels on the same machine, or to compare
hardware. To compare hardware you need to be running the same architecture
machines (eg i386), the same userspace binaries and run kernbench on the same
kernel source tree.

It runs a kernel at various numbers of concurrent jobs: 1/2 number of cpus,
optimal (default is 1xnumber of cpus) and maximal job count. Optionally it can
also run single threaded and a custom number of jobs. It then prints out a
number of useful statistics for the average of each group of runs and logs them
to kernbench.log

You need more than 4Gb of ram for this to be a true throughput benchmark with
the -M option or else you will get swapstorms.

Ideally it should be run in single user mode on a non-journalled filesystem,
from a ramdisk would be even better. To compare results it should always be
run in the same kernel tree.

How do I use it?

You need a kernel tree (any 2.6 will do) and the applications 'time', 'awk',
'date' and 'yes' installed. 'time' is different to the builtin time used by
BASH and has more information desired for this benchmark.
Simply cd into the kernel tree directory and type



kernbench v0.50 by Con Kolivas <>
kernbench [-n runs] [-o jobs] [-s] [-c runs] [-H] [-O] [-M] [-h] [-v]
n : number of times to perform benchmark (default 5)
o : number of jobs for optimal run (default 1 * cpu)
s : perform single threaded runs (default don't)
c : number of jobs for custom run (default don't do)
H : don't perform half load runs (default do)
O : don't perform optimal load runs (default do)
M : don't perform maximal load runs (default do)
f : fast run
h : print this help
v : print version number

v0.50 Changed optimal load to 1xCPUs. The 4x was a figure based on poorly
	performing CPU schedulers that couldn't keep the cores loaded.
	Likewise include half run if jobs == 2 as this IS a meaningful test.
	Changed /bin/sh to /bin/bash since some distros no longer use BASH
	by default. Changed from defconfig to allnoconfig. The kernel is big
	enough that even this reliably and reproducibly tests throughput.
	Added custom number of jobs option. Cache kernel tree 4 times to
	achieve the "active referenced" status in the linux VM. Bumped version
	number since results are not compatible with .42.

v0.42 Fixed incorrect counting of cpus (thanks Flynn Marquardt)
	Changed -j to at least 4GB ram.

v0.41 Fixed make oldconfig

v0.40 Made all runs use the oldconfig if it exists. Changed to only do one
	warmup run before all the benchmarks. Added logging to kernbench.log
	Cleaned up the code substantially to reuse code where possible.
	Added standard deviation statistics courtesy of Peter Williams

v0.30 Added fast run option which bypasses caching, warmup and tree 
	preparation and drops number of runs to 3. Modified half loads to 
	detect -j2 and change to -j3. Added syncs. Improved warnings and 

v0.20 Change to average of runs, add options to choose which runs to perform
	remove single threaded run from defaults, do warmup run, lots more
	sanity checks, drop meaningless runs, add a few warnings, remove fudge
	factor from no. of jobs.

v0.11 First public release

Thanks: M. Bligh for ideas. Others for help with magic incantations to get
	BASH to work.

Con Kolivas <>
Sat Dec 12 00:15:04 2009

GPL of course. Read COPYING included in this tarball.