CPO


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.


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