warmup_stats

This system was originally developed as part of the Virtual Machine Warmup Blows Hot and Cold paper. It analyses VM performance data and outputs various statistics (e.g. if the VM warmed up or slowed down; how long it took to warmup; what (if any) the steady state performance is).

The system can be found at the warmup_stats repository.

Running benchmarks

High quality VM benchmarking is hard to achieve: it is easy to accidentally end up measuring something other than was intended. We wrote Krun to help make reliable VM measurement easier. Krun is not suitable for all purposes, but is probably the easiest way to obtain high quality benchmarking data.

A large-scale example

The Virtual Machine Warmup Blows Hot and Cold paper also serves as an example of a large-scale VM experiment. You can find that experiment at the warmup_experiment repository.

Generating output

The warmup_stats repository provides scripts for generating tables of benchmarking results (similar to those in the paper), plots, and 'diffs' between different versions of a VM. Results and diff tables can be rendered as either HTML (to integrate with a continuous integration system), or LaTeX / PDF. Plots can be produced in PDF format only.

Example results from warmup_stats

Hover over the table below to see a diff between these results and the same benchmarks run on a variant of the same VM.

Benchmark results

Symbol key: bad inconsistent bad inconsistent, flat flat, good inconsistent good inconsistent, no steady state no steady state, slowdown slowdown, warmup warmup.

 

Results for Normal

Benchmark Classification Steady iteration (#) Steady iteration (secs) Steady performance (secs)
binarytreesflat
0.12490
±0.002494
capnproto_decodeflat
0.12721
±0.017089
capnproto_encodewarmup
119.5
(64.2, 268.1)
18.282
(7.799, 46.709)
0.12109
±0.050785
fannkuch_reduxflat
0.11952
±0.000665
fastaflat
0.12133
±0.000200
jsonlua_decodebad inconsistent (7 flat, 2 warmup, 1 no steady state)
jsonlua_encodeflat
0.13302
±0.002619
luacheckflat
1.02083
±0.044730
luacheck_parserbad inconsistent (7 warmup, 2 slowdown, 1 no steady state)
luafunwarmup
52.0
(36.6, 68.5)
8.657
(5.969, 11.388)
0.16755
±0.007539
md5flat
0.11280
±0.000011
nbodyflat
0.15906
±0.001202
richardswarmup
2.0
(2.0, 2.0)
0.148
(0.137, 0.150)
0.14340
±0.006683
serieswarmup
2.0
(2.0, 2.0)
0.345
(0.345, 0.345)
0.33401
±0.000171
spectralnormflat
0.13988
±0.000002