240 likes | 387 Views
Comparison of JVM Phases on Data Cache Performance . Shiwen Hu and Lizy K. John Laboratory for Computer Architecture The University of Texas at Austin. Motivation. Execution of Java programs consists of distinct JVM phases JIT compilation Garbage collection Execution
E N D
Comparison of JVM Phases on Data Cache Performance Shiwen Hu and Lizy K. John Laboratory for Computer Architecture The University of Texas at Austin
Motivation • Execution of Java programs consists of distinct JVM phases • JIT compilation • Garbage collection • Execution • Efficient execution of Java programs necessitates a comparative study of requirements and characteristics of JVM phases The First Workshop on Managed Run Time Workloads
Outline • Experimental methodology • Varying cache metrics • Cache size, set associativity, block size • Decomposition by miss types • Time varying cache behavior • Conclusion The First Workshop on Managed Run Time Workloads
Methodology • LaTTe JVM: • An open-source, state-of-the-art JVM • Memory management of LaTTe JIT compiler • Reusable initial stack – 50KB • Allocate dynamic stacks when necessary – recyclable • Heap Management • Large object area: indexed by a hash table • Small object area: heads indicating object sizes The First Workshop on Managed Run Time Workloads
Methodology (Cont.) • Experimental workloads: SPECjvm 98 benchmarks • Using s10 data set • Cache simulator: • Based on Cachesim5 from Sun’s Shade V6 tool suite • A JVM phase aware cache simulator • Default configuration: • 64KB, 32B blocks, 4-way set associative The First Workshop on Managed Run Time Workloads
Breakdown of JVM phases • JIT compilation and execution phases dominate • In terms of instruction counts, data references, and data misses • Garbage collector has the highest miss rates • Large working set (heap) and pointer-chasings • But, rarely affects overall cache performance The First Workshop on Managed Run Time Workloads
Breakdown of JVM phases (Cont.) The First Workshop on Managed Run Time Workloads
Varying cache size • Increasing cache size is more effective on JIT compilation than on garbage collection • Larger working set of garbage collector • Pointer chasing access pattern of garbage collector • Stacks of most JIT compilations can be held in 128K cache • Varying effect on execution phase • More effective on mpegaudio than on db The First Workshop on Managed Run Time Workloads
Varying cache size (Cont.) The First Workshop on Managed Run Time Workloads
Varying set associativity • Increasing set associativity rarely affects JIT compilation and garbage collection • Negligible conflict misses due to uniform accesses to heap or stacks • Dominated by capacity misses • Short lives of JIT objects • Varying effectiveness on execution phase • mtrt: 52% misses eliminated • db and javac: 13% misses eliminated The First Workshop on Managed Run Time Workloads
Varying set associativity (Cont.) The First Workshop on Managed Run Time Workloads
Varying block size • Effective on JIT compilation and garbage collection • JIT compilation: good spatial locality due to stack initialization • Garbage collection: good spatial locality during sweep phase • Varying effectiveness on execution phase • Larger block: db,jess, mpegaudio, and mtrt • Smaller block: compress, jack, javac The First Workshop on Managed Run Time Workloads
Varying block size (Cont.) The First Workshop on Managed Run Time Workloads
Decomposition by miss types - JIT • Capacity misses dominate • Less compulsory misses • Reusable initial stack • Overlapped dynamic stacks • Negligible conflict misses • Splitting cache rarely affects miss type composition The First Workshop on Managed Run Time Workloads
Decomposition by miss types - GC • Fewest compulsory misses in unified cache • Cache blocks accessed during execution phase • More compulsory misses in split cache • Uniform heap sweeping The First Workshop on Managed Run Time Workloads
Decomposition by miss types - EXEC • Relatively more compulsory misses • Heap objects allocation and initialization • Variety reveals program characteristics • Splitting cache rarely affects miss type composition The First Workshop on Managed Run Time Workloads
Time varying behavior • Importance of separating JVM activities from application activities • Java programs execute on JVMs, differing with C/C++ programs • Correlating performance results with JVM or application characteristics is important to design better JVMs The First Workshop on Managed Run Time Workloads
Time varying behavior (Cont.) • JVM specific operations dominate the startup and end of application execution • Class loadings, method compilations • Few garbage collections • Corresponding to burst of cache misses • Four passes of JIT compilation correspond to four bursts of cache misses The First Workshop on Managed Run Time Workloads
Time varying behavior - compress • Less GC and JIT activities • Cyclic behavior • Two phases during execution The First Workshop on Managed Run Time Workloads
Time varying behavior - mtrt • More GC and JIT activities • No cyclic behavior The First Workshop on Managed Run Time Workloads
Time varying behavior - startup • Identical behavior during startup • First 110 million instructions • Sharing of harness classes among SPECjvm 98 benchmarks prolongs the duration The First Workshop on Managed Run Time Workloads
Conclusion • Comparative study of cache performance of distinct JVM phases • Deterministic characteristics of cache behavior • JIT compilation: traversing intermediate data structures • Garbage collection: large working set and pointer chasings The First Workshop on Managed Run Time Workloads
Conclusion (Cont.) • Near identical cache performance of JIT compilation among applications • Varying cache behavior during execution phase reveal characteristics of applications The First Workshop on Managed Run Time Workloads