Understanding program performance using temporal vertical profiles

  • Authors:
  • Matthias Hauswirth;Amer Diwan

  • Affiliations:
  • University of Colorado at Boulder;University of Colorado at Boulder

  • Venue:
  • Understanding program performance using temporal vertical profiles
  • Year:
  • 2005

Quantified Score

Hi-index 0.00

Visualization

Abstract

Modern programming languages support a rich set of features that provide significant software engineering benefits. However, these features often degrade performance and require complex and multilayered runtime systems. These runtime systems interact with the application, making it harder to understand and tune overall system performance. Thus, understanding the performance of modern systems requires profiling information spanning all levels of the execution stack, such as the hardware, operating system, virtual machine, and application. In this work we introduce a methodology, called temporal vertical profiling, that enables this level of understanding. We illustrate the efficacy of this approach by providing deep understanding of performance problems of a number of Java applications running on a virtual machine with vertical profiling support. Even with our methodology, this task is labor intensive. To alleviate this problem, we present techniques to automate parts of the temporal vertical profiling approach. Our methodology is based on the reasoning about relationships between the temporal traces of performance metric values measured in the various subsystems on all layers of a computer system. We show how to automate important steps of our methodology: Our trace alignment technique aligns traces obtained from separate runs so that one can reason across the traces; and our correlation-based ranking and causality-based filtering techniques sift through hundreds of metrics to find ones that have a bearing on a performance anomaly of interest. We implemented these techniques in our temporal vertical profiling infrastructure and were able to significantly speed up the search for the causes of bad performance. By incorporating temporal vertical profiling into a programming environment, programmers will be able to understand how their programs interact with the underlying abstraction levels, from application server, virtual machine, and operating system, all the way down to the hardware.