Abstract
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.
Similar content being viewed by others
Explore related subjects
Discover the latest articles, news and stories from top researchers in related subjects.References
Anderson, T. and Lazowska, E. 1990. ‘Quartz: A tool for tuning parallel program performance’. In: Proc. of ACM SIGMETRICS 1990 Conf. on Measurement and Modeling of Computer Systems. ACM pp. 115–125.
Aspect-oriented software development (web site). http://www.aosd.net.
Borland OptimizeIt Suite 5.5 for Java. Whitepaper available at http://www.borland.com/optimizeit/.
Call Path Profiles: Relating Costs to Design Decisions. http://www.research.att.com/∼hall/cpp-profject.html.
Franz Inc. Allegro COMPOSER User Guide, version 1.0, 1990.
Graham, S.L., Kessler, P.B., and McKusick, M.K. 1982. Gprof: A call graph execution profiler’. ACM SIGPLAN Notices 17(6): 120–126.
Hall, R.J. 1995. Call Path Refinement Profiles. IEEE Transactions on Software Engineering 21(6).
Hall, R.J. and Goldberg, A.J. 1993. Call path profiling of monotonic program resources in UNIX. In: Proc. 1993 USENIX Summer Technical Conf. USENIX Association, 1993.
Halter, S.L. and Munroe, S.J. 2001. Enterprise Java Performance. Prentice Hall, Chapt. 8.
Java platform debugger architecture overview (web page). http://java.sun.com/j2se/1.3/docs/guide/jpda/jpda.html.
Java virtual machine profiler interface (JVMPI). http://java.sun.com/j2se/1.4.2/docs/guide/jvmpi/.
Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., and Griswold, W. 2001. Getting Started with Aspect J. Comm. ACM, 44(10): 59–65.
Knuth, D.E. 1971. An empirical study of fortran programs. Software–Practice and Experience, 1: 105–133.
Larus, J. and Ball, T. 1996. Efficient path profiling. In: Proc. MICRO-29. IEEE, 1996.
Pure Software Inc. Quantify User’s Guide, 1993.
Sitraka JProbe (web page). http://www.sitraka.com/software/jprobe/.
Transaction Processing Performance Council (web site). http://www.tpc.org/.
Author information
Authors and Affiliations
Corresponding author
Additional information
This paper describes a significant extension to work reported in a paper appearing in Proc. 17th IEEE Intl. Conf. on Automated Software Engineering. Some passages from that paper are reproduced here and are copyright IEEE Computer Society, 2002.
Rights and permissions
About this article
Cite this article
Hall, R.J. Aspect-Capable Call Path Profiling of Multi-Threaded Java Applications. Autom Software Eng 12, 415–446 (2005). https://doi.org/10.1007/s10515-005-2647-5
Issue Date:
DOI: https://doi.org/10.1007/s10515-005-2647-5