ABSTRACT
Calling context profiles are used in many inter-procedural code optimizations and in overall program understanding. Unfortunately, the collection of profile information is highly intrusive due to the high frequency of method calls in most applications. Previously proposed calling-context profiling mechanisms consequently suffer from either low accuracy, high overhead, or both. We have developed a new approach for building the calling context tree at runtime, called adaptive bursting. By selectively inhibiting redundant profiling, this approach dramatically reduces overhead while preserving profile accuracy. We first demonstrate the drawbacks of previously proposed calling context profiling mechanisms. We show that a low-overhead solution using sampled stack-walking alone is less than 50% accurate, based on degree of overlap with a complete calling-context tree. We also show that a static bursting approach collects a highly accurate profile, but causes an unacceptable application slowdown. Our adaptive solution achieves 85% degree of overlap and provides an 88% hot-edge coverage when using a 0.1 hot-edge threshold, while dramatically reducing overhead compared to the static bursting approach.
- Colorado bench. http://www-plan.cs.colorado.edu/henkel/projects/colorado bench.Google Scholar
- Kawa, the java-based scheme system. http://www.gnu.org/software/kawa.Google Scholar
- G. Ammons, T. Ball, and J. R. Larus. Exploiting hardware performance counters with flow and context sensitive profiling. In SIGPLAN Conference on Programming Language Design and Implementation, pages 85--96, 1997. Google Scholar
Digital Library
- M. Arnold and D. Grove. Collecting and Exploiting High-Accuracy Call Graph Profiles in Virtual Machines. In International Symposium on Code Generation and Optimization, 2005. Google Scholar
Digital Library
- M. Arnold and B. Ryder. A framework for reducing the cost of instrumented code. In SIGPLAN Conference on Programming Language Design and Implementation, pages 168--179, 2001. Google Scholar
Digital Library
- M. Arnold and P. F. Sweeney. Approximating the calling context tree via sampling. IBM Research Report, July 2000.Google Scholar
- T. Ball and J. R. Larus. Optimally profiling and tracing programs. ACM Transactions on Programming Languages and Systems, 16(4):1319--1360, July 1994. Google Scholar
Digital Library
- A. R. Bernat and B. P. Miller. Incremental call-path profiling. Technical report, University of Wisconsin, 2004.Google Scholar
- P. P. Chang, S. A. Mahlke, W. Y. Chen, and W.M. Hwu. Profiledguided automatic inline expansion for c programs. Software-Practice and Experience, 22(5):349--369, 1992. Google Scholar
Digital Library
- T. H. Cormen, C. E. Leiserson, and R. L. Rivest. Introduction to Algorithms. MIT Press, Cambridge MA and McGraw-Hill, 1990. Google Scholar
Digital Library
- Standard Performance Evaluation Corporation. Specjbb2000 java business benchmark. http://www.spec.org/jbb2000.Google Scholar
- Standard Performance Evaluation Corporation. Specjvm98 benchmarks. http://www.spec.org/jvm98.Google Scholar
- Standard Performance Evaluation Corporation. SPECjAppServer2004. http://www.spec.org/jAppServer2004.Google Scholar
- P. T. Feller. Value profiling for instructions and memory locations. Masters Thesis CS98-581, University of California San Diego, April 1998.Google Scholar
- N. Froyd, J. Mellor-Crummey, and R. Fowler. Low-overhead call path profiling of unmodified, optimized code. In ICS '05: Proceedings of the 19th annual international conference on Supercomputing, pages 81--90, 2005. Google Scholar
Digital Library
- D. Grove, G. DeFouw, J. Dean, and C. Chambers. Call graph construction in object-oriented languages. In Proceedings OOPSLA '97, pages 108--124, 1997. Google Scholar
Digital Library
- N. Grcevski, A. Kielstra, K. Stoodley, M. Stoodley, and V. Sundaresan. Java just-in-time compiler and virtual machine improvements for server and middleware applications. In Usenix 3rd Virtual Machine Research and Technology Symposium (VM'04), 2004. Google Scholar
Digital Library
- R. J. Hall. Call path profiling. In Proceedings of the 14th International Conference on Software Engineering, IEEE Computer Society 1992. Google Scholar
Digital Library
- K. Hazelwood and D. Grove. Adaptive Online Context Sensitive Inlining. In International Symposium on Code Generation and Optimization, pages 253--264, 2003. Google Scholar
Digital Library
- M. Hirzel and T. Chilimbi. Bursty tracing: A framework for lowoverhead temporal profiling. In In 4th ACM Workshop on Feedback- Directed and Dynamic Optimization (FDDO-4), December 2001.Google Scholar
- U. Holzle and D. Ungar. Optimizing dynamically-dispatched calls with run-time type feedback. In SIGPLAN Conference on Programming Language Design and Implementation, pages 326--336, 1994. Google Scholar
Digital Library
- P. Kessler S. Graham and M. McKusick. An execution profiler for modular programs. Software-Practice and Experience, 13(8):671--685, 1983.Google Scholar
Cross Ref
- J. M. Spivey. Fast, accurate call graph profiling. Software-Practice and Experience, 34(3):249--264, 2004. Google Scholar
Digital Library
- T. Suganuma, T. Yasue, and T. Nakatani. An empirical study of method inlining for a java just-in-time compiler. In JVM-02 Java Virtual Machine Research and Technology Symposium, pages 91--104, 2002. Google Scholar
Digital Library
- J. Whaley. A portable sampling-based profiler for java virtual machines. In Java Grande, pages 78--87, 2000. Google Scholar
Digital Library
- T. Yasue, T. Suganuma, H. Komatsu, and T. Nakatani. An efficient online path profiling framework for java just-in-time compilers. In PACT Conference on Parallel Architectures and Compilation Techniques, pages 148--158, 2003. Google Scholar
Digital Library
Index Terms
Accurate, efficient, and adaptive calling context profiling
Recommendations
k-Calling context profiling
OOPSLA '12: Proceedings of the ACM international conference on Object oriented programming systems languages and applicationsCalling context trees are one of the most fundamental data structures for representing the interprocedural control flow of a program, providing valuable information for program understanding and optimization. Nodes of a calling context tree associate ...
Accurate, efficient, and adaptive calling context profiling
Proceedings of the 2006 PLDI ConferenceCalling context profiles are used in many inter-procedural code optimizations and in overall program understanding. Unfortunately, the collection of profile information is highly intrusive due to the high frequency of method calls in most applications. ...
k-Calling context profiling
OOPSLA '12Calling context trees are one of the most fundamental data structures for representing the interprocedural control flow of a program, providing valuable information for program understanding and optimization. Nodes of a calling context tree associate ...







Comments