
Continuous Program Optimization (CPO)
Advances in software and hardware technology and the recent trends
towards increased virtualization and standardization are rapidly
adding to the complexity and the number of layers in the execution
stack. Although performance problems that result from the
interactions among the execution layers are commonly observed, it is
still not well understood exactly how these layers interact and how
their interactions can be optimized for added performance. The goal of
our research on continuous program optimization (CPO) is to provide a
unifying framework to support a whole-system approach to program
optimization that cuts across all layers of the execution stack
opening up new optimization opportunities. At the core of our CPO
framework is a performance and environment monitoring (PEM)
infrastructure that gathers data across the entire execution stack,
from the hardware, through the operating system, runtime and
middleware layer, to the application. Consuming this vertically
integrated PEM data, a CPO agent that runs across the layers can then
affect changes and improve performance. We have designed a
platform-independent monitoring API (PEMAPI) to support efficient
customization and aggregation of the event stream for both on-line and
off-line consumption of the data by CPO agents. To extend the impact
of the CPO agents across executions of a program the CPO framework
also includes a data base for persistent storage of both optimization
and monitoring history. Through integration of online and offline
agents within the CPO framework, CPO can support an entire
optimization spectrum: optimizing prior to, during, and across
application executions.
We are in process of implementing several CPO agents to demonstrate
the effectiveness of the CPO framework for tuning application
performance.
- Our first agent is a performance visualizer that displays the
integrated event stream to the user to explore performance data gathered
across the entire system.
- Another CPO agent that we built resides inside IBM’s J9 Java
Virtual Machine to tune the heuristics that govern the operation of the JIT
compiler via a feedback loop across runs. The agent uses the CPO data base
to store information about profiles and final optimization state which is
used in future runs (with possibly varying inputs) to improve application
startup overhead by bypassing the costly learning period that is otherwise
required to determine the appropriate optimization level for each compiled
method.
- Finally, we have built a CPO agent that optimizes the memory behavior
of an application by automatically making large page decisions. Using PEM
events germane to large pages, the CPO agent performs a cost-benefit
analysis to predict the most beneficial arenas in the application's
data to map to large pages. Our CPO agent can automatically achieve the
performance improvements from large pages that until now would require
manual programmer intervention and in-depth knowledge of both the
application and the operating system's large page policies.
Contact Info
If you have questions please contact Evelyn Duesterwald at duester at
us.ibm.com
Publications
PEM Infrastructure
Performance and Environment Monitoring for
Whole-System Characterization and Optimization
Robert W. Wisniewski, Peter F. Sweeney, Kartik Sudeep, Matthias Hauswirth,
Evelyn Duesterwald, Calin Cascaval, and Reza Azimi,
"Performance and Environment Monitoring for Whole-System Characterization
and Optimization",
PAC2 (Conference on Power/Performance interaction with Architecture,
Circuits, and Compilers) 2004
CPO JVM Agent
Collecting and Exploiting High-Accuracy Call
Graph Profiles in Virtual Machines
Matthew Arnold and David Grove,
"Collecting and Exploiting High-Accuracy Call Graph Profiles in Virtual Machines",
CGO (International Symposium on Code Generation and Optimization)
March 2005
The CPO Team
Past and current contributors
CPO-PEM:
Calin Cascaval,
Evelyn Duesterwald,
Peter Sweeney,
and
Robert Wisniewski,
CPO-JVM:
Matthew Arnold,
Michael Hind,
and Allan Kielstra
CPO data base:
Bilha Mendelson
and Nitzan Peleg
Other contributing teams
PE Visualization:
Marina Biberstein,
and Matthias Hauswirth
K42 team :
Jonathan Appavoo,
Marc Auslander,
Maria Butrico,
Dilma DaSilva,
Orran Krieger,
Mark Mergen,
Michal Ostrowski,
Bryan Rosenburg,
Amos Waterland,
Robert Wisniewski,
and Jimi Xenidis.
HW performance monitoring:
Reza Azimi,
and Alex Mericas
Mambo Simulation:
Kartik Sudeep
Applications:
Ram Rajamony
Other contributors:
Stephen Smith,
and David Grove
Page last updated March 2005 - if any links are broken please send email
to: duester at us.ibm.com