4/27/2005 2:00pm-4:00pm ECOT 831
|
Understanding Program Performance Using Temporal Vertical Profiles
Computer Science PhD Candidate
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.
|