Affiliation:
1. Sun Microsystems Laboratories, Mountain View, CA
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.
Publisher
Association for Computing Machinery (ACM)
Reference27 articles.
1. JSR 163- Java#8482; Platform Profiling Architecture. http://www.jcp.org/jsr/detail/163.jsp. JSR 163- Java#8482; Platform Profiling Architecture. http://www.jcp.org/jsr/detail/163.jsp.
2. Open System Testing Architecture (OpenSTA). http://www.opensta.org 2003. Open System Testing Architecture (OpenSTA). http://www.opensta.org 2003.
3. Exploiting hardware performance counters with flow and context sensitive profiling
4. Optimally profiling and tracing programs
5. Search strategies for Java bottleneck location by dynamic instrumentation
Cited by
16 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Is JavaScript Call Graph Extraction Solved Yet? A Comparative Study of Static and Dynamic Tools;IEEE Access;2023
2. Software Bug Prediction based on Complex Network Considering Control Flow;2022 IEEE 22nd International Conference on Software Quality, Reliability, and Security Companion (QRS-C);2022-12
3. Enhanced Bug Prediction in JavaScript Programs with Hybrid Call-Graph Based Invocation Metrics;Technologies;2020-12-30
4. Hot Code Patching in CPython;Proceedings of the 14th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems - ICOOOLPS '19;2019
5. [Research Paper] Static JavaScript Call Graphs: A Comparative Study;2018 IEEE 18th International Working Conference on Source Code Analysis and Manipulation (SCAM);2018-09