Online Phase Detection Algorithms
Priya Nagpurkar, Michael Hind, Chandra Krintz,
Peter Sweeney, and
Today's virtual machines (VMs) dynamically
optimize an application as it is executing,
often employing optimizations that are specialized
for the current execution profile.
An online phase detector determines when an executing
program is in a stable period of program execution (a phase)
or is in transition.
A VM using an online phase detector can apply
specialized optimizations during a phase
or reconsider optimization decisions between phases.
Unfortunately, extant approaches to detecting phase behavior
rely on either offline profiling, hardware support, or are
targeted toward a particular optimization.
In this work, we focus on the enabling technology of online
phase detection. More specifically, we contribute
(a) a novel framework for online phase detection,
(b) multiple instantiations of the framework that produce novel
online phase detection algorithms,
(c) a novel client- and machine-independent baseline methodology for
evaluating the accuracy of an online phase detector,
(d) a metric to compare online detectors to this baseline, and
(e) a detailed empirical evaluation, using Java applications,
of the accuracy of the numerous phase detectors.