Aspect Enabled Adaptive Garbage Collection Darren Ng David

Aspect Enabled Adaptive Garbage Collection Darren Ng David Kaeli

Outline • • • Introduction Problem: Java Performance Jikes Research Virtual Machine (RVM) Aspect Oriented Programming (AOP) Aspectual Framework for Adaptive Garbage Collection • SPEC JVM 98 Results • Summary • Future Work

Thesis Overview • Goal To explore the use of aspect oriented programming (AOP) software engineering to enhance the run-time performance of the Java language. More specifically, an AOP framework was created to enable adaptive garbage collection in the Jikes Research Virtual Machine (RVM).

Thesis Contribution 1. Detailed how aspects in the form of Aspect. J can be integrated into the Jikes RVM for “environmentally aware” software components. 2. Described an AOP framework for adaptive Garbage Collection in the Jikes RVM to improve Java application performance. 3. Explained how the current AOP framework can be expanded for future software research.

Problem: Java Performance • Java is an interpreted programming language. • A virtual machine (VM) translates Java bytecode into machine code. • A virtual machine also automatically manages heap memory.

Java Performance Cont. • The use of a VM consumes CPU cycles and slows down the execution of the Java application. • New Java technology is continually being developed to increase the performance of the language. – Just-in-time Compilation – New Garbage Collection Schemes

Garbage Collector Categories • Stop the World – Application program is paused while the garbage collector is active. • Incremental – Interleaves partial garbage collection with application execution. • Concurrent – Application and collector may operate simultaneously • Real-Time – Garbage collection time is bounded by a guaranteed small time constant to minimize the application pause time.

Garbage Collection Terms • Garbage Collection Cycle (2 phases) 1) Garbage Detection 2) Garbage Reclamation • Root Set – Static variables – Local (stack-allocated) variables – General-purpose registers. All objects reachable from the root set are consider live and cannot be reclaimed. Un-reachable objects can be freed.

STW: Semi-Space

STW: Semi-Space • Advantages: – Inherently compacts data during copying. • Disadvantages: – Requires a lot more heap memory!

STW: Mark-Sweep

STW: Mark-Sweep • Advantages: – Simplementation – Handles cyclical garbage • Disadvantages: – Fragmentation of memory – Garbage collection time is proportional to heap size

STW: Generational Copy

STW: Generational Mark-Sweep

STW: Generational • Advantage – Reduced garbage collection overhead • Disadvantage – More book keeping overhead to keep track of references from the mature space to the nursery (Write Barriers)

Garbage Collector Selection • There is no single garbage collector that will be optimal in all situations. • Current VM’s garbage collectors are static entities that are included at VM compile time or selected via a user command line switch. • Lack of “environmental awareness” results in a non-optimal garbage collector choice.

Aspect Oriented Programming • AOP can be used to overcome the performance limitations of a static garbage collector. • Aspects allow monolithic program components to be non-intrusively upgraded and modified to achieve new functionality. • Aspects permit the gathering of data throughout a program’s hierarchy.

Aspect. J • Join Point - A well defined location within the primary code where a concern will crosscut the application. • Pointcut - A collection of join points that designates where advice code should be inserted in the program. • Advice - Code to execute before, after, or around a pointcut encounter.

Adaptive Garbage Collector • Adopts a “best-fit” approach to garbage collection by adjusting itself to better suit the run-time environment. • In their paper, Suman et al. showed how adaptive garbage collection can benefit the performance of Java applications. • Adaptive garbage collection can be used for other purposes besides performance.

Why Use AOP? 1. Aspects minimize the required changes to the RVM source code though the use of inter-type declarations and the aspectual introduction. 2. Aspects can crosscut the RVM hierarchy to gather related VM statistics. 3. Aspects allow for non-intrusive “plugging” and “unplugging” of VM components to update functionality. 4. Aspects modularize the adaptive garbage collector behavior so future upgrades require minimal effort.

Jikes Research Virtual Machine

Java Virtual Memory Toolkit • From version 2. 2. 0+ of the Jikes RVM, the garbage collector is contained within the Java Memory Tookit • The core VM is isolated from any memory management responsibilities and allows different garbage collectors to be compared on a 1: 1 basis.

Java Virtual Memory Toolkit • The garbage collector in the JMTk is composed from multiple highly reusable classes. • All garbage collectors are of the Stop the World variety. • The unique characteristics of a garbage collector is derived from its “Plan” and associated policies classes.

Aspectual Framework 1. Extract all used garbage collector methods and re-target them with aspects. 2. Introduce new garbage collection schemes into the singular JMTk garbage collection plan with aspects. 3. Resolve all memory map conflicts between co-existing garbage collectors. 4. Create a heuristic for garbage collector selection.

Aspectual Framework

Jikes RVM Virtual Memory Map

Universal Virtual Memory Map • The universal virtual memory map helps resolve resource conflicts between the JMTk garbage collectors. • Semi-Space • Generational Copy

Limitations/Overhead of Aspect. J • AOP has an inherent overhead associated with pointcut matching and advice execution. • In the Jikes RVM, “write. Barriers” are needlessly called on non-generational garbage collectors • Final Variables not targetable. • Protected Access Types are not supported • Non Intuitive Pointcuts for abstract methods.

SPEC JVM 98 Benchmarks • Compress – Uses a modified Lempel-Ziv method (LZW) to compress data. • Jess – Java Expert Shell System that continuously applies a set of if-then statements, called rules, to a set of data, called the fact list. • Db – Performs multiple database functions on a memory resident database. • Javac – Java compiler from the JDK 1. 0. 2.

SPEC JVM 98 Benchmarks • Mpegaudio – Decompresses audio files that conform to the ISO MPEG Layer-3 audio specification. • Mtrt – A raytracer that works on a scene depicting a dinosaur, where two threads each renders the scene in the input file time-test model. • Jack – A Java parser generator that is based on the Purdue Compiler Construction Tool Set (PCCTS).

Computer/Experiment Setup • A computer with the following characteristics was used to produce the experimental results. – 2. 0 Ghz Intel Xeon Processor – 1 GB DDR 266 system memory – Red. Hat 9. 0 Linux OS (standard installation) • All JVM 98 benchmarks were executed 5 times on a 100% sized dataset for each heap size. The fastest and slowest times are discarded and the remaining 3 are averaged.

Jikes RVM Setup • Fast – Assertion checking in the RVM is turned o. – All necessary RVM classes are included in the boot image. • Adaptive – The adaptive optimizing compiler selects "hotspots" during a programs execution via a statistical sampling model. As such, every run of the Jikes RVM with the adaptive compiler will produce slightly differing results.

JVM 98 Benchmark Min Heap Sizes • The Generational Mark Sweep collector has the lowest memory heap requirements of all evaluated garbage collectors

JVM 98 Standardized Heap Sizes • In order to ensure a fair comparison between all garbage collectors, the minimum heap size was standardized to be the largest of the minimum values for the four garbage collectors.

SPEC JVM 98 Jess Results

Jess Garbage Collection Count

Jess Results

SPEC JVM 98 Db Results

Db Garbage Collection Count

Db Garbage Collection Count

SPEC JVM 98 Javac Results

Javac Garbage Collection Count

Javac Results

Summary • Described how to increase the performance of Java applications with the use of AOP. • Defined and created an AOP framework to facilitate an adaptive garbage collector and implemented it in the Jikes RVM. • Discovered that our AOP framework introduces a slight performance overhead but can increase the JVM 98 benchmark performance on the Jikes RVM significantly.

Future Work • Our AOP framework does not currently support “on -the-fly” garbage collector switching. However, the framework can be upgraded to do so.
- Slides: 45