22
DaCapo Benchmarks Java Benchmarking Development and Analysis Stephen M Blackburn, Robin Garner, Chris Hoffmann, Asjad M Khan, Kathryn S McKinley, Rotem Bentzur, Amer Diwan, Daniel Feinberg, Daniel Frampton, Samuel Z Guyer, Martin Hirzel, Antony Hosking, Maria Jump, Han Lee, J Eliot B Moss, Aashish Phansalkar, Darko Stefanovic, Thomas VanDrunen, Daniel von Dincklage, Ben Wiedermann

DaCapo Benchmarks - GitHub Pagesrobingarner.github.io/dacapo-oopsla-2006-talk.pdf · r a ytr ace db ja v ac mpegaudio mtrt jack antlr bloat chart eclipse f op hsqldb luindex lusear

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: DaCapo Benchmarks - GitHub Pagesrobingarner.github.io/dacapo-oopsla-2006-talk.pdf · r a ytr ace db ja v ac mpegaudio mtrt jack antlr bloat chart eclipse f op hsqldb luindex lusear

DaCapo Benchmarks Java Benchmarking Development and Analysis

Stephen M Blackburn, Robin Garner, Chris Hoffmann, Asjad M Khan, Kathryn S McKinley, Rotem Bentzur, Amer Diwan, Daniel Feinberg, Daniel Frampton, Samuel Z Guyer,

Martin Hirzel, Antony Hosking, Maria Jump, Han Lee, J Eliot B Moss, Aashish Phansalkar, Darko Stefanovic, Thomas VanDrunen, Daniel von Dincklage, Ben Wiedermann

Page 2: DaCapo Benchmarks - GitHub Pagesrobingarner.github.io/dacapo-oopsla-2006-talk.pdf · r a ytr ace db ja v ac mpegaudio mtrt jack antlr bloat chart eclipse f op hsqldb luindex lusear

2

statistics Disraeli

benchmarks There are lies, damn lies, and “sometimes more than twice as fast”

“our …. is better or almost as good as …. across the board”

“garbage collection degrades performance by 70%”

“speedups of 1.2x to 6.4x on a variety of benchmarks”

“our prototype has usable performance”

“the overhead …. is on average negligible”

“…demonstrating high efficiency and scalability”

“our algorithm is highly efficient”

“can reduce garbage collection time by 50% to 75%”

“speedups…. are very significant (up to 54-fold)”

“speed up by 10-25% in many cases…” “…about 2x in two cases…”

“…more than 10x in two small benchmarks”

“…improves throughput by up to 41x”

Page 3: DaCapo Benchmarks - GitHub Pagesrobingarner.github.io/dacapo-oopsla-2006-talk.pdf · r a ytr ace db ja v ac mpegaudio mtrt jack antlr bloat chart eclipse f op hsqldb luindex lusear

3

The success of most systems innovation hinges on benchmark performance.

Predicate 2. Methodology is appropriate.

Predicate 1. Benchmarks reflect current (and ideally, future) reality.

Page 4: DaCapo Benchmarks - GitHub Pagesrobingarner.github.io/dacapo-oopsla-2006-talk.pdf · r a ytr ace db ja v ac mpegaudio mtrt jack antlr bloat chart eclipse f op hsqldb luindex lusear

4

Predicate 1. Benchmarks & Reality

•  JVM design & implementation –  SPECjvm98 is small and SPECjbb is relatively

simple •  Q: What has this done to compiler research? •  Q: What has this done to GC research?

•  Computer architecture –  ISCA & Micro still rely on SPEC CPU (almost exclusively)

•  Q: What does this mean for Java performance on future architectures?

CK metrics Instruction Misses/ms Heap (MB)

WMC DIT L1/ms ITLB/ms Allocated Live

min 152 12 34 2 0.7 0.6

max 1011 186 6356 759 271 21.1

geomean 366 40 860 56 86.5 3.8

Page 5: DaCapo Benchmarks - GitHub Pagesrobingarner.github.io/dacapo-oopsla-2006-talk.pdf · r a ytr ace db ja v ac mpegaudio mtrt jack antlr bloat chart eclipse f op hsqldb luindex lusear

5

The success of most systems innovation hinges on benchmark performance.

Predicate 2. Methodology is appropriate.

Predicate 1. Benchmarks reflect current (and ideally, future) reality. ✘

Page 6: DaCapo Benchmarks - GitHub Pagesrobingarner.github.io/dacapo-oopsla-2006-talk.pdf · r a ytr ace db ja v ac mpegaudio mtrt jack antlr bloat chart eclipse f op hsqldb luindex lusear

6

Predicate 2.

Benchmarks & Methodology •  We’re not in Kansas anymore!

– JIT compilation, GC, dynamic checks, etc

•  Methodology has not adapted – Needs to be updated and institutionalized

“…this sophistication provides a significant challenge to understanding complete system performance, not found in traditional languages such as C or C++” [Hauswirth et al OOPSLA ’04]

SPEC _209_db Performance

1.1

1.15

1.2

1.25

1.3

1.35

System A System B

No

rma

lize

d T

ime

SPEC _209_db Performance

0.95

1

1.05

1.1

1.15

1.2

System A System B

No

rma

lize

d T

ime

SPEC _209_db Performance

1

1.05

1.1

1.15

1.2

1.25

1.3

20 40 60 80 100 120

Heap Size (MB)

No

rma

lize

d T

ime

System A

System B

SPEC _209_db Performance

1.1

1.15

1.2

1.25

1.3

1.35

System A System B

No

rma

lize

d T

ime

SPEC _209_db Performance

0.95

1

1.05

1.1

1.15

1.2

System A System B

No

rma

lize

d T

ime

0

0.20.4

0.6

0.81

1.2

1.41.6

1.8

compres

sjes

s

raytra

ce dbjav

ac

mpegau

diomtrt jac

kan

tlrbloat

chart

eclip

se fophsq

ldb

luindex

lusearc

hjyt

honpmd

xalan

geomea

n

No

rm

ali

ze

d T

ime

System ASystem BSystem C

00.20.40.60.8

11.21.41.61.8

2

compres

sjes

s

raytra

ce dbjav

ac

mpegau

diomtrt jac

kan

tlrbloat

chart

eclip

se fophsq

ldb

luindex

lusearc

hjyt

honpmd

xalan

geomea

n

No

rm

ali

ze

d T

ime

System ASystem BSystem C

00.20.40.60.8

11.21.41.61.8

2

compres

sjes

s

raytra

ce dbjav

ac

mpegau

diomtrt jac

kan

tlrbloat

chart

eclip

se fophsq

ldb

luindex

lusearc

hjyt

honpmd

xalan

geomea

n

No

rm

ali

ze

d T

ime

System ASystem BSystem C

1st iteration

2nd iteration

3rd iteration

•  Comprehensive comparison –  3 state-of-the-art JVMs –  Best of 5 executions –  19 benchmarks –  1 platform (2GHz Pentium-M, 1GB RAM, linux 2.6.15)

Page 7: DaCapo Benchmarks - GitHub Pagesrobingarner.github.io/dacapo-oopsla-2006-talk.pdf · r a ytr ace db ja v ac mpegaudio mtrt jack antlr bloat chart eclipse f op hsqldb luindex lusear

7

The success of most systems innovation hinges on benchmark performance.

Predicate 2. Methodology is appropriate.

Predicate 1. Benchmarks reflect current (and ideally, future) reality. ✘ ✘ ?

Page 8: DaCapo Benchmarks - GitHub Pagesrobingarner.github.io/dacapo-oopsla-2006-talk.pdf · r a ytr ace db ja v ac mpegaudio mtrt jack antlr bloat chart eclipse f op hsqldb luindex lusear

8

Innovation Trap •  Innovation is gated by benchmarks •  Poor benchmarking retards innovation &

misdirects energy –  Reality: inappropriate, unrealistic benchmarks –  Reality: poor methodology

•  Examples –  GC is avoided when doing SPEC performance runs –  Lack of architectural tuning to Java

Page 9: DaCapo Benchmarks - GitHub Pagesrobingarner.github.io/dacapo-oopsla-2006-talk.pdf · r a ytr ace db ja v ac mpegaudio mtrt jack antlr bloat chart eclipse f op hsqldb luindex lusear

9

How Did This Happen? •  Researchers depend on SPEC

–  Primary purveyor & de facto guardian –  Industry body concerned with product comparison

•  Minimal involvement from researchers •  Not specifically concerned with research analysis/methodology

–  Historically C & Fortran benchmarks •  SPEC did not significantly modify methodology for Java

•  Researchers tend not to create their own suites –  Enormously expensive exercise

Page 10: DaCapo Benchmarks - GitHub Pagesrobingarner.github.io/dacapo-oopsla-2006-talk.pdf · r a ytr ace db ja v ac mpegaudio mtrt jack antlr bloat chart eclipse f op hsqldb luindex lusear

10

Enough Whining. How Do We Respond?

•  Critique our benchmarks & methodology –  Not enough to “set the bar high” when reviewing! –  Need appropriate benchmarks & methodology

•  Develop new benchmarks –  NSF review panel challenged us

•  Maintain and evolve those benchmarks •  Establish new, appropriate methodologies •  Attack problem as a community

–  Formally (SIGPLAN?) and ad hoc (eg DaCapo)

Page 11: DaCapo Benchmarks - GitHub Pagesrobingarner.github.io/dacapo-oopsla-2006-talk.pdf · r a ytr ace db ja v ac mpegaudio mtrt jack antlr bloat chart eclipse f op hsqldb luindex lusear

11

The DaCapo Suite: Background & Scope

•  Motivation (mid 2003) –  We wanted to do good Java runtime and compiler research –  An NSF review panel agreed that the existing Java

benchmarks were limiting our progress •  Non-goal: Product comparison framework (see SPEC) •  Scope

–  Client-side, real-world, measurable Java apps. •  Real-world data and coding idioms, manageable dependencies

•  Two-pronged effort –  New candidate benchmarks –  New suite of analyses to characterize candidates

Page 12: DaCapo Benchmarks - GitHub Pagesrobingarner.github.io/dacapo-oopsla-2006-talk.pdf · r a ytr ace db ja v ac mpegaudio mtrt jack antlr bloat chart eclipse f op hsqldb luindex lusear

12

The DaCapo Suite: Goals •  Open source

–  Encourage (& leverage) community feedback –  Enable analysis of benchmark sources –  Freely available, avoid intellectual property restrictions

•  Real, non-trivial applications –  Popular, non-contrived, active applications –  Use analysis to ensure non-trivial, good coverage

•  Responsive, not static –  Adapt the suite as circumstances change

•  Easy to use

Page 13: DaCapo Benchmarks - GitHub Pagesrobingarner.github.io/dacapo-oopsla-2006-talk.pdf · r a ytr ace db ja v ac mpegaudio mtrt jack antlr bloat chart eclipse f op hsqldb luindex lusear

13

The DaCapo Suite: Today

•  Open source (www.dacapobench.org) –  Significant community-driven improvements already

•  Examples: enable whole program analysis (McGill) , Xalan revision (Intel)

•  11 real, non-trivial applications –  Compared to JVM98, JBB2000; on average:

•  2.5 X classes, 4 X methods, 3 X DIT, 20 X LCOM, 2 X optimized methods, 5 X icache load, 8 X ITLB, 3 X running time, 10 X allocations, 2 X live size

•  Responsive, not static –  Have adapted the suite

•  Examples: addition of eclipse, lusearch, luindex and revision of Xalan

•  Easy to use –  Single jar file, OS-independent, MD5-based output validation

Page 14: DaCapo Benchmarks - GitHub Pagesrobingarner.github.io/dacapo-oopsla-2006-talk.pdf · r a ytr ace db ja v ac mpegaudio mtrt jack antlr bloat chart eclipse f op hsqldb luindex lusear

14

Methodology Recommendations

•  Improved methodology for JVM –  Measure & report multiple iterations –  Use & report multiple arch. when measuring JVM –  Use & report multiple JVMs when measuring arch.

•  Improved methodology for JIT –  Determinism is crucial to some analyses (use “replay”)

•  Improved methodology for GC –  Use & report a range of fixed heap sizes –  Hold workload (cf time) constant –  Hold compiler activity constant (use “replay”)

Page 15: DaCapo Benchmarks - GitHub Pagesrobingarner.github.io/dacapo-oopsla-2006-talk.pdf · r a ytr ace db ja v ac mpegaudio mtrt jack antlr bloat chart eclipse f op hsqldb luindex lusear

15

Example Analyses

Page 16: DaCapo Benchmarks - GitHub Pagesrobingarner.github.io/dacapo-oopsla-2006-talk.pdf · r a ytr ace db ja v ac mpegaudio mtrt jack antlr bloat chart eclipse f op hsqldb luindex lusear

16

Broader Impact •  Just the tip of the iceberg?

•  Q: How many good ideas did not see light of day because they did not improve jvm98?

•  A problem unique to Java? •  Q: How has the lack of C# benchmarks impacted research?

•  What’s next? –  Multicore architectures, transactional memory, Fortress,

dynamic languages, … •  Q: Can we properly evaluate TM & locking? •  Q: Can we adequately evaluate TM impl.s? (SPLASH & JBB???)

•  Are we prepared to let major directions in our field unfold at the whim of inadequate methodology?

Page 17: DaCapo Benchmarks - GitHub Pagesrobingarner.github.io/dacapo-oopsla-2006-talk.pdf · r a ytr ace db ja v ac mpegaudio mtrt jack antlr bloat chart eclipse f op hsqldb luindex lusear

17

Developing a New Suite •  Establish a consortium

–  DaCapo involves more than 8 institutions

•  Scope the project –  What qualities do you most want to expose?

•  Identify realistic candidate benchmarks –  This can take years (!)

•  Identify/develop many analyses and metrics –  This is a huge undertaking in itself

•  Analyze candidates & prune set, engaging community –  A lengthy, iterative process

•  Use PCA to verify coverage

Page 18: DaCapo Benchmarks - GitHub Pagesrobingarner.github.io/dacapo-oopsla-2006-talk.pdf · r a ytr ace db ja v ac mpegaudio mtrt jack antlr bloat chart eclipse f op hsqldb luindex lusear

18

Conclusions •  Systems innovation is gated by benchmarks

–  Benchmarks & methodology can retard or accelerate innovation, focus or misdirect energy.

•  As a community, we have failed –  We have unrealistic benchmarks and poor methodology

•  Are we going to continue to retard innovation? –  Transactional memory, multicore performance, dynamic

languages, etc…

•  We need to take responsibility for benchmarks & methodology –  Formally (eg SIGPLAN) or via ad hoc consortia (eg DaCapo)

Page 19: DaCapo Benchmarks - GitHub Pagesrobingarner.github.io/dacapo-oopsla-2006-talk.pdf · r a ytr ace db ja v ac mpegaudio mtrt jack antlr bloat chart eclipse f op hsqldb luindex lusear

19

Acknowledgments •  Andrew Appel, Randy Chow, Frans Kaashoek and Bill Pugh who

encouraged this project at our three year ITR review. •  Intel and IBM for their participation in this project •  The US National Science Foundation (NSF) and Australian

Research Council (ARC) for funding this work •  Mark Wegman who initiated the public availability of Jikes RVM, and

the developers of Jikes RVM •  Fahad Gilani for writing the original version of our measurement

infrastructure for his ANU Masters Thesis •  Kevin Jones and Eric Bodden for significant feedback and

enhancements •  Vladimir Strigun and Yuri Yudin for extensive testing and feedback •  The entire DaCapo research consortium for their long term

assistance and engagement with this project

www.dacapobench.org

Page 20: DaCapo Benchmarks - GitHub Pagesrobingarner.github.io/dacapo-oopsla-2006-talk.pdf · r a ytr ace db ja v ac mpegaudio mtrt jack antlr bloat chart eclipse f op hsqldb luindex lusear

20

Extra Slides

Page 21: DaCapo Benchmarks - GitHub Pagesrobingarner.github.io/dacapo-oopsla-2006-talk.pdf · r a ytr ace db ja v ac mpegaudio mtrt jack antlr bloat chart eclipse f op hsqldb luindex lusear

21

Page 22: DaCapo Benchmarks - GitHub Pagesrobingarner.github.io/dacapo-oopsla-2006-talk.pdf · r a ytr ace db ja v ac mpegaudio mtrt jack antlr bloat chart eclipse f op hsqldb luindex lusear

22

Example Analyses

Benchmark overview

Vital statistics

Heap composition time series

Live object size distribution

Allocated object Size distribution Object size distribution

time series (alloc & live)

Pointer distance distributions (mutation & snapshot)