Aspect-Capable Call Path Profiling of Multi-Threaded Java Applications

作者:Robert J. Hall

摘要

A primary goal of program performance understanding tools ought to be to focus the user’s attention directly on optimization opportunities where significant cost savings may be found. Optimization opportunities fall into (at least) three broad categories: the call context of a general component may obviate the need for some of its generality; methods or cross-cutting program aspects may be implemented inefficiently for particular contexts of use; and thread dependencies may cause unintended delays. This paper enhances prior work in call path profiling (Hall, 1995) in several ways. It provides two different call path oriented views on program performance, a server view and a thread view. The former helps one optimize for throughput, while the latter is useful for improving thread latency. Threadview incorporates an extended notation for time that allows the user to distinguish times spent when a thread is actually executing from times it is waiting for a monitor, higher- or equal-priority thread, or other operating system event. The new framework also enables aspect-oriented program profiling, even when the original program was not designed in an aspect-oriented fashion. Finally, the approach is implemented in a tool, CpprofJ, an aspect-capable call path profiler for Java. It exploits recent developments in the Java APIs to achieve accurate and portable sampling-based profiling. Several case studies illustrate its use.

论文关键词:program understanding, performance, optimization, call path, profiling

论文评审过程:

论文官网地址:https://doi.org/10.1007/s10515-005-2647-5