Title: Simulating Java Virtual Machines
1Simulating Java Virtual Machines
- Xianglong Huang (UT Austin),
- Eliot Moss (UMass Amherst),
- Steve Blackburn (Australian National Univ.),
- Kathryn S. McKinley (UT Austin),
- Doug Burger (UT Austin)
2Dynamic SimpleScalar
- Dynamic code generation
- Pre-decoding simulator
- Signal mechanism
- Simulated signal functionalities
- Thread scheduling and synchronization
- Support for thread switch and lock
3SPECjvm98
- compress, a Java port of the 129.compress
benchmark from SPEC CPU95 - jess, an expert system shell
- raytrace, a ray tracing program
- db, which simulates a database system
- javac, the Sun JDK 1.02 Java compiler, compiling
jess - mpegaudio, a decoder to decompress MPEG-3 audio
files - mtrt, a multithreaded raytracer
- jack, which generates a parser repeatedly
4Validation Results--compress
Average difference from performance counter is
1.33
5Studies
- The effect of varying heap size
- Isolating GC and mutator phase
- 64K L1 data cache, 4M L2 data cache
6Performance Curve -- db
Notice the sweet spot at heap size 150M
7 of Instructions
Instruction number reduces because of less GC
8L1 Instruction Cache
Instruction cache misses has no sweet spot
9L1 Data Cache
Data cache misses has sweet spot
10Performance Curve -- db
11Performance Curve--_213_javac
Most benchmarks have performance curve as Javac
12Isolating Mutator and GC
13Isolating Mutator and GC
- Fixed-size nursery generational GC
14Isolating Mutator and GC
- Appel-style flexible-size nursery GC
- Before GC
- After GC
15Total Cycles (geometric mean)
Performance of Java program with different type
of GC
16Mutator Cycles
The performance of application (mutator) itself
17Write Barrier
- Pointers allocation in mutator phase
- Young to younger generation
- Young to old
- Old to young
18GC Cycles
GC cycles change on different heap sizes
19L1 Data Cache, Mutator
In mutator phase, L1 data cache accesses varies
very little
20L1 Data Cache, Mutator
In mutator phase, L1 data cache misses varies
very little
21L1 Data Cache, GC
In GC phase, L1 data cache accesses varies a lot
22L1 Data Cache, GC
In GC phase, the L1 data cache miss rate is low
23L2 Cache
- Very few L2 accesses.
- Mutator L2 miss rate varies from 5.5 to 7.5,
not much. - For Appel and fixed size nursery GC, GC L2 miss
rate is around 40. - For semi-space is around 50.
24Conclusion
- DSS is a useful tool for studying Java programs
- Several SPECjvm98 benchmarks has sweet spot of
execution - Copying GCs have little effect on mutator
behavior, except the write barrier effects.