Abstract
Instrumentation-based profiling has many advantages and one serious disadvantage: usually high performance overhead. This overhead can be substantially reduced if only a small part of the target application (for example, one that has previously been identified as a performance bottleneck) is instrumented, while the rest of the application code continues to run at full speed. The value of such a profiling technology would increase further if the code could be instrumented and de-instrumented as many times as needed at run time.In this paper we present an experimental profiling system called JFluid, which includes a modified Java™ VM and a GUI tool, and addresses both of the above issues. Our tool supports instrumentation of a group of methods defined as an arbitrary "root" method plus all methods that it calls (a call subgraph). It appears that static determination of all methods in a call subgraph is difficult in presence of virtual methods, bug fortunately, with dynamic code hotswapping available, two schemes of dynamic call subgraph revelation and instrumentation can be suggested. Measurements that we obtained when performing full and partial program profiling using both schemes show that the overhead can be reduced substantially using this technique, and that one of the schemes generally results in a smaller number of instrumented methods and better performance. Furthermore, we observe that our approach generally works much better for large (for example, J2EE and Web) applications, than for small benchmarks.
- JSR 163- Java#8482; Platform Profiling Architecture. http://www.jcp.org/jsr/detail/163.jsp.Google Scholar
- Open System Testing Architecture (OpenSTA). http://www.opensta.org, 2003.Google Scholar
- G. Ammons, T. Ball, and J. Larus. Exploiting hardware performance counters with flow and context sensitive profiling. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI-97). ACM Press, 1997. Google ScholarDigital Library
- T. Ball and J. Larus. Optimally profiling and tracing programs. In ACM Transactions on Programming Languages and Systems, volume 16, pages 1319--1360, 1994. Google ScholarDigital Library
- D. Brear, T. Weise, T. Wiffen, K. Yeung, S. Bennett, and P. Kelly. Search strategies for Java bottleneck location by dynamic instrumentation. UK Performance Engineering Workshop (UKPEW) 2003, Warwick, UK, July 2003.Google ScholarCross Ref
- BEA Systems. JRockit 8.1 SDK User Guide. http://edocs.bea.com/wljroekit/docs81/userguide/index.html.Google Scholar
- B. Calder, P. Feller, and A. Eustace. Value profiling and optimization. Journal of lnstruction Level Parallelism, 1, March 1999.Google Scholar
- Borland Software Corporation. OptimizeIt Suite. http://www.borland.com/optimizeit, 2002.Google Scholar
- M. Dmitriev. Safe Evolution of Large and Long-Lived Java Applications. PhD thesis, Department of Computing Science, University of Glasgow, Glasgow G12 8QQ, Scotland, 2001.Google Scholar
- M. Dmitriev. Application of the HotSwap Technology to Advanced Profiling. In Proceedings of the First Workshop on Unanticipated Software Evolution, held at ECOOP 2002 International Conference, Malaga, Spain, 2002.Google Scholar
- M. Dmitriev. Design of JFluid: a Profiling Technology and Tool Based on Dynamic Bytecode Instrumentation. Technical report, Sun Microsystems Laboratories, 2600 Casey Avenue, Mountain view, CA 94043, USA, 2004. Available at http://researeh.sun.eom.Google Scholar
- U. Hölzle. Adaptive Optimization for Self: Reconciling High Performance with Exploratory Programming. PhD thesis, Stanford University, March 1995. Also published as Sun Microsystems Laboratories Technical Report SMLI TR-95-35. Google ScholarDigital Library
- Intel Inc. Intel VTune Performance Analyzers. http://www.intel.com/software/products/vtune/.Google Scholar
- T. Lindholm and F. Yellin. The Java Virtual Machine Specification, Second Edition. Addison-Wesley, 1999. Google ScholarDigital Library
- W. De Pauw, N. Mitchell, M. Robillard, G. Sevitsky, and H. Sfinivasan. Drive-by Analysis of Running Programs. In Proceedings for Workshop on Software Visualization, International Conference on Software Engineering, May 2001. Google ScholarDigital Library
- Quest Software. JProbe Java Profiler. http://java.quest.com/jprobe/jprobe.shtml.Google Scholar
- A. Rountev, A. Milanova, and B. Ryder. Fragment Class Analysis for Testing of Polymorphism in Java Software. In Proceedings of the 25th International Conference on Software Engineering (ICSE'03). IEEE Computer Society Press, 2003. Google ScholarDigital Library
- G. Sevitsky, W. De Pauw, and R. Konuru. An Information Exploration Tool for Performance Analysis of Java Programs. In Proceedings of TOOLS Europe 2001 Conference, 2001. Google ScholarDigital Library
- Standard Performance Evaluation Corporation. SPEC Java Virtual Machine Benchmark Suite. http://www.spec.org/osg/jvm98, August 1998.Google Scholar
- Sun Microsystems Inc. Java 2 Platform, Enterprise Edition - Documentation. http://java.sun.com/j2ee/docs.html.Google Scholar
- Sun Microsystems Inc. Java Blueprints. http://java.sun.com/blueprints/code.Google Scholar
- Sun Microsystems Inc. Java HotSpot#8482; Technology. http://java.sun.com/products/hotspot.Google Scholar
- Sun Microsystems Inc. Java Virtual Machine Debug Interface Reference. http://java.sun.com/products/jpda/doc/jvmdi-spoc.html, 2000.Google Scholar
- Sun Microsystems Inc. Java Virtual Machine Wire Protocol Reference. http://java.sun.com/products/jpda/doc/jdwp-spec.html, 2000.Google Scholar
- Sun Microsystems, Inc. Emerging technologies: jvmstat. http://developers.sun.com/dev/coolstuff/jvmstat, 2003.Google Scholar
- Wily Technology. Introscope 3.0. http://wilytoehnologios.com/solutions_introscope.html.Google Scholar
- University of Wisconsin, Madison. ParaDyn Project. http://www.cs.wisc.edu/paradyn/.Google Scholar
Index Terms
- Profiling Java applications using code hotswapping and dynamic call graph revelation
Recommendations
Profiling Java applications using code hotswapping and dynamic call graph revelation
WOSP '04: Proceedings of the 4th international workshop on Software and performanceInstrumentation-based profiling has many advantages and one serious disadvantage: usually high performance overhead. This overhead can be substantially reduced if only a small part of the target application (for example, one that has previously been ...
Navigating error recovery code in Java applications
eclipse '05: Proceedings of the 2005 OOPSLA workshop on Eclipse technology eXchangeJava provides a program-level exception handling mechanism in response to error conditions (that are translated into exceptions by Java VM). However, exception handling code is often widely scattered throughout an application and untested. This paper ...
Comments