Results 1 - 10
of
12
MicroPhase: An Approach to Proactively Invoking Garbage Collection for Improved Performance
, 2007
"... To date, the most commonly used criterion for invoking garbage collection (GC) is based on heap usage; that is garbage collection is invoked when the heap or an area inside the heap is full. This approach can suffer from two performance shortcomings, untimely garbage collection invocations and large ..."
Abstract
-
Cited by 11 (0 self)
- Add to MetaCart
To date, the most commonly used criterion for invoking garbage collection (GC) is based on heap usage; that is garbage collection is invoked when the heap or an area inside the heap is full. This approach can suffer from two performance shortcomings, untimely garbage collection invocations and large volumes of surviving objects. In this work, we explore a new GC triggering approach called MicroPhase that exploits two observations, (i) allocation requests occur in phases and (ii) the phase boundaries coincide with times when most objects also die, to proactively invoke garbage collection yielding high efficiency. We extended the HotSpot virtual machine from Sun Microsystems to support MicroPhase and conducted experiments using 20 benchmarks. The experimental results indicate that our technique can reduce the GC times in 19 applications. The differences in GC overhead range from an increase of 1 % to a decrease of 26 % when the heap is set to be twice the maximum live-size. As a result, MicroPhase can improve the the overall performance of 13 benchmarks. The performance differences range from a degradation of 2.5 % to an improvement of 14%.
Modeling Relations Between Inputs and Dynamic Behavior for General Programs
, 2007
"... Abstract. Program dynamic optimization, adaptive to runtime behavior changes, has become increasingly important for both performance and energy savings. However, most runtime optimizations often suffer from the lack of a global picture of a program’s execution, and cannot afford sophisticated progra ..."
Abstract
-
Cited by 8 (8 self)
- Add to MetaCart
Abstract. Program dynamic optimization, adaptive to runtime behavior changes, has become increasingly important for both performance and energy savings. However, most runtime optimizations often suffer from the lack of a global picture of a program’s execution, and cannot afford sophisticated program analysis. On the other hand, offline profiling techniques overcome both obstacles but are oblivious to the effects of program inputs. An approach in the between is to offline find the connections between program inputs and runtime behavior, and then apply the knowledge to runtime optimizations. Although it potentially gets the best of both worlds, it yet faces an open question: How to discover and model the relations between inputs and runtime behavior for general programs. This work explores that fundamental problem in three aspects. It proposes an eXtensible Input Characterization Language (XICL) to resolve the complexity of program inputs. With XICL translator, a raw input is automatically converted to an attribute vector, which is then refined by a feature selector to remove redundancies and noises. The final step employs statistical learning techniques to build input-behavior models, mainly through cross-validation, regression trees, and polynomial regression. Experiments on IBM XL compilers show accurate prediction of detailed execution profiles, which helps profile-directed compilation outperform both static and offline profiling-based compilations in a commercial compiler, demonstrating the potential of the technique for continuous program optimizations. 1
Cross-Input Learning and Discriminative Prediction in Evolvable Virtual Machines
"... Abstract—Modern languages like Java and C # rely on dynamic optimizations in virtual machines for better performance. Current dynamic optimizations are reactive. Their performance is constrained by the dependence on runtime sampling and the partial knowledge of the execution. This work tackles the p ..."
Abstract
-
Cited by 6 (5 self)
- Add to MetaCart
Abstract—Modern languages like Java and C # rely on dynamic optimizations in virtual machines for better performance. Current dynamic optimizations are reactive. Their performance is constrained by the dependence on runtime sampling and the partial knowledge of the execution. This work tackles the problems by developing a set of techniques that make a virtual machine evolve across production runs. The virtual machine incrementally learns the relation between program inputs and optimization strategies so that it proactively predicts the optimizations suitable for a new run. The prediction is discriminative, guarded by confidence measurement through dynamic self-evaluation. We employ an enriched extensible specification language to resolve the complexities in program inputs. These techniques, implemented in Jikes RVM, produce significant performance improvement on a set of Java applications.
Online phase-adaptive data layout selection
- In Proceedings of the European Conference on Object-Oriented Programming
, 2008
"... Abstract. Good data layouts improve cache and TLB performance of object-oriented software, but unfortunately, selecting an optimal data layout a priori is NP-hard. This paper introduces layout auditing, a technique that selects the best among a set of layouts online (while the program is running). L ..."
Abstract
-
Cited by 5 (0 self)
- Add to MetaCart
Abstract. Good data layouts improve cache and TLB performance of object-oriented software, but unfortunately, selecting an optimal data layout a priori is NP-hard. This paper introduces layout auditing, a technique that selects the best among a set of layouts online (while the program is running). Layout auditing randomly applies different layouts over time and observes their performance. As it becomes confident about which layout performs best, it selects that layout with higher probability. But if a phase shift causes a different layout to perform better, layout auditing learns the new best layout. We implemented our technique in a product Java virtual machine, using copying generational garbage collection to produce different layouts, and tested it on 20 long-running benchmarks and 4 hardware platforms. Given any combination of benchmark and platform, layout auditing consistently performs close to the best layout for that combination, without requiring offline training. 1
Performance, Measurement
"... This paper presents a finding and a technique on program behavior prediction. The finding is that surprisingly strong statistical correlations exist among the behaviors of different program components (e.g., loops) and among different types of programlevel behaviors (e.g., loop trip-counts versus da ..."
Abstract
-
Cited by 3 (0 self)
- Add to MetaCart
This paper presents a finding and a technique on program behavior prediction. The finding is that surprisingly strong statistical correlations exist among the behaviors of different program components (e.g., loops) and among different types of programlevel behaviors (e.g., loop trip-counts versus data values). Furthermore, the correlations can be beneficially exploited: They help resolve the proactivity-adaptivity dilemma faced by existing program behavior predictions, making it possible to gain the strengths of both approaches—the large scope and earliness of offline-profiling–based predictions, and the cross-input adaptivity of runtime sampling-based predictions. The main technique contributed by this paper centers on a new concept, seminal behaviors. Enlightened by the existence of strong correlations among program behaviors, we propose a regressionbased framework to automatically identify a small set of behaviors that can lead to accurate prediction of other behaviors in a program. We call these seminal behaviors. By applying statistical learning techniques, the framework constructs predictive models that map from seminal behaviors to other behaviors, enabling proactive and cross-input adaptive prediction of program behaviors. The prediction helps a commercial compiler, the IBM XL C compiler, generate code that runs up to 45 % faster (5%–13 % on average), demonstrating the large potential of correlation-based techniques for program optimizations.
Custom Object Layout for Garbage-Collected Languages
"... Modern architectures require data locality to achieve performance. However, ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Modern architectures require data locality to achieve performance. However,
Flexible Reference-Counting-Based Hardware Acceleration for Garbage Collection
"... Languages featuring automatic memory management (garbage collection) are increasingly used to write all kinds of applications because they provide clear software engineering and security advantages. Unfortunately, garbage collection imposes a toll on performance and introduces pause times, making su ..."
Abstract
- Add to MetaCart
Languages featuring automatic memory management (garbage collection) are increasingly used to write all kinds of applications because they provide clear software engineering and security advantages. Unfortunately, garbage collection imposes a toll on performance and introduces pause times, making such languages less attractive for high-performance or real-time applications. Much progress has been made over the last five decades to reduce the overhead of garbage collection, but it remains significant. We propose a cooperative hardware-software technique to reduce the performance overhead of garbage collection. The key idea is to reduce the frequency of garbage collection by efficiently detecting and reusing dead memory space in hardware via hardwareimplemented reference counting. Thus, even though software garbage collections are still eventually needed, they become much less frequent and have less impact on overall performance. Our technique is compatible with a variety of software garbage collection algorithms, does not break compatibility with existing software, and reduces garbage collection time by 31 % on average on the Java Da-Capo benchmarks running on the production build of the Jikes RVM, which uses a state-of-the-art generational garbage collector.
Evolvable Virtual Machines
"... Modern languages like Java and C # rely on dynamic optimizations in virtual machines for better performance. Current dynamic optimizations are reactive. Their performance is constrained by the dependence on runtime sampling and the partial knowledge of the execution. This work tackles the problems b ..."
Abstract
- Add to MetaCart
Modern languages like Java and C # rely on dynamic optimizations in virtual machines for better performance. Current dynamic optimizations are reactive. Their performance is constrained by the dependence on runtime sampling and the partial knowledge of the execution. This work tackles the problems by developing a set of techniques that make a virtual machine evolve across runs. The virtual machine incrementally learns the relation between program inputs and optimization strategies so that it proactively predicts the optimizations suitable for a new run. The prediction is discriminative, guarded by confidence measurement through dynamic self-evaluation. The complexity in program inputs are resolved by an extensible specification language. Experiments demonstrate the effectiveness of the techniques in enhancing the optimizor in a virtual machine increasingly with certain guarantees. 1
Execution Hijacking: Improving Dynamic Analysis by Flying off Course
"... Abstract—Typically, dynamic-analysis techniques operate on a small subset of all possible program behaviors, which limits their effectiveness and the representativeness of the computed results. To address this issue, a new paradigm is emerging: execution hijacking—techniques that explore a larger se ..."
Abstract
- Add to MetaCart
Abstract—Typically, dynamic-analysis techniques operate on a small subset of all possible program behaviors, which limits their effectiveness and the representativeness of the computed results. To address this issue, a new paradigm is emerging: execution hijacking—techniques that explore a larger set of program behaviors by forcing executions along specific paths. Although hijacked executions are infeasible for the given inputs, they can still produce feasible behaviors that could be observed under other inputs. In such cases, execution hijacking can improve the effectiveness of dynamic analysis without requiring the (expensive) generation of additional inputs. To evaluate the usefulness of execution hijacking, we defined, implemented, and evaluated several variants of it. Specifically, we performed empirical study where we assessed whether execution hijacking could improve the effectiveness of two common dynamic analyses: software testing and memory error detection. The results of the study show that execution hijacking, if suitably performed, can indeed help dynamic analysis techniques. “When you come to a fork in the road, take it.” –Yogi Berra 1 I.
A Step Towards Transparent Integration of Input-Consciousness into Dynamic Program Optimizations
"... Dynamic program optimizations are critical for the efficiency of applications in managed programming languages and scripting languages. Recent studies have shown that exploitation of program inputs may enhance the effectiveness of dynamic optimizations significantly. However, current solutions for e ..."
Abstract
- Add to MetaCart
Dynamic program optimizations are critical for the efficiency of applications in managed programming languages and scripting languages. Recent studies have shown that exploitation of program inputs may enhance the effectiveness of dynamic optimizations significantly. However, current solutions for enabling the exploitation require either programmers’ annotations or intensive offline profiling, impairing the practical adoption of the techniques. This current work examines the basic feasibility of transparent integration of input-consciousness into dynamic program optimizations, particularly in managed execution environments. It uses transparent learning across production runs as the basic vehicle, and investigates the implications of cross-run learning on each main component of inputconscious

