AI helps you reading Science

AI generates interpretation videos

AI extracts and analyses the key points of the paper to generate videos automatically


pub
Go Generating

AI Traceability

AI parses the academic lineage of this thesis


Master Reading Tree
Generate MRT

AI Insight

AI extracts a summary of this paper


Weibo:
We show that the Pin’s high-level, call-based instrumentation API does not compromise performance

Pin: building customized program analysis tools with dynamic instrumentation

Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation, no. 6 (2005): 190-200

Cited by: 4389|Views227
EI

Abstract

Robust and powerful software instrumentation tools are essential for program analysis tasks such as profiling, performance evaluation, and bug detection. To meet this need, we have developed a new instrumentation system called Pin. Our goals are to provide easy-to-use, portable, transparent, and efficient instrumentation. Instrumentation ...More

Code:

Data:

Introduction
  • Robust and powerful software instrumentation tools are essential

    As software complexity increases, instrumentation—a technique for program analysis tasks such as profiling, performance evalu- for inserting extra code into an application to observe its behavior—

    ation, and bug detection.
  • Robust and powerful software instrumentation tools are essential.
  • Ation, and bug detection.
  • To meet this need, the authors have developed is becoming more important.
  • Instrumentation can be performed at a new instrumentation system called Pin. The authors' goals are to provarious stages: in the source code, at compile time, post link time, vide easy-to-use, portable, transparent, and efficient instrumenta- or at run time.
  • Pin is a software system that performs run-time tion.
  • Instrumentation tools are written in C/C++
Highlights
  • Robust and powerful software instrumentation tools are essential

    As software complexity increases, instrumentation—a technique for program analysis tasks such as profiling, performance evalu- for inserting extra code into an application to observe its behavior—

    ation, and bug detection
  • Our goals are to provarious stages: in the source code, at compile time, post link time, vide easy-to-use, portable, transparent, and efficient instrumenta- or at run time
  • Pin consists of a virtual machine (VM), a code cache, and an instru-
  • We show only the integer results in Figure 7 as integer codes are more problematic than floating-point codes in terms of the slowdown caused by instrumentation
  • We have presented Pin, a system that provides easy-to-use, portable, transparent, efficient, and robust instrumentation
  • We show that the Pin’s high-level, call-based instrumentation API does not compromise performance
Methods
  • The authors begin with a system overview of Pin. The authors discuss how Pin initially gains control of the application, followed by a detailed description of how Pin dynamically compiles the application.
  • The authors discuss the organization of Pin source code.
  • Pin consists of a virtual machine (VM), a code cache, and an instru- 2005/4/19.
  • Application Dispatcher Pin Pintool Address Space.
  • Instrumentation APIs Virtual Machine (VM).
  • JIT Compiler Emulation Unit Code Cache
Results
  • The authors found that the image produced by compiler A executed 2% more dynamic instructions than the image produced by compiler B.
Conclusion
  • The authors have presented Pin, a system that provides easy-to-use, portable, transparent, efficient, and robust instrumentation.
  • It supports the IA32, EM64T, Itanium R , and ARM architectures running Linux.
  • Automatic optimizations done by the JIT compiler make Pin’s instrumentation even more efficient than other tools that use low-level APIs. The authors demonstrate the versatility of Pin with two Pintools, Opcodemix and PinPoints.
Tables
  • Table1: Distribution of Pin source among different architectures running Linux. Over 99% of code is written in C++ and the remaining is in assembly
  • Table2: Experimental setup
  • Table3: Dynamic instruction distribution in PopCnt() of crafty benchmark
  • Table4: Applications analyzed with PinPoints. Column 3 shows the code section size of the application binary and shared libraries reported by the size command. Column 4 lists the dynamic instruction count for the longest-running application input
Download tables as Excel
Related work
  • There is a large body of related work in the areas of instrumentation and dynamic compilation. To limit our scope of discussion, we concentrate on binary instrumentation in this section. At the highest level, instrumentation consists of static and dynamic approaches.

    Static binary instrumentation was pioneered by ATOM [30], followed by others such as EEL [18], Etch [25], and Morph [31]. Static instrumentation has many limitations compared to dynamic instrumentation. The most serious one is that it is possible to mix code and data in an executable and a static tool may not have enough information to distinguish the two. Dynamic tools can rely on execution to discover all the code at run time. Other difficult
Reference
  • AMBER home page. http://amber.scripps.edu/.
    Findings
  • Fluent home page. http://www.fluent.com/.
    Findings
  • LS-DYNA home page. http://www.lstc.com/.
    Findings
  • RenderMan home page. http://RenderMan.pixar.com/.
    Findings
  • A.-R. Adl-Tabatabai, J. Bharadwaj, D.-Y. Chen, A. Ghuloum, V. Menon, B. Murphy, M. Serrano, and T. Shpeisman. The StarJIT compiler: A dynamic compiler for managed runtime environments. Intel Technology Journal, 7(1):19–31, Feb 2003.
    Google ScholarLocate open access versionFindings
  • D. L. Bruening. Efficient, Transparent, and Comprehensive Runtime Code Manipulation. PhD thesis, M.I.T. (http://www.cag.lcs.mit.edu/dynamorio/), September 2004.
    Findings
  • B. R. Buck and J. Hollingsworth. An api for runtime code patching. Journal of High Performance Computing Applications, 14(4):317– 329, 2000.
    Google ScholarLocate open access versionFindings
  • M. G. Burke, J.-D. Choi, S. Fink, D. Grove, M. Hind, V. Sarkar, M. J. Serrano, V. C. Sreedhar, H. Srinivasan, and J. Whaley. The Jalapeno dynamic optimizing compiler for java. In ACM Java Grande Conference, pages 129–141, June 1999.
    Google ScholarLocate open access versionFindings
  • B. M. Cantrill, M. W. Shapiro, and A. H. Leventhal. Dynamic instrumentation of production systems. In Proceedings of the 6th Symposium on Operating Systems Design and Implementation, 2004.
    Google ScholarLocate open access versionFindings
  • K.D. Cooper, M.W. Hall, and K. Kennedy. A methodology for procedure cloning. Computer Languages, 19(2), April 1993.
    Google ScholarLocate open access versionFindings
  • J. L. Henning. SPEC CPU2000: measuring cpu performance in the new millennium. IEEE Computer, 33(7):28–35, July 2000.
    Google ScholarLocate open access versionFindings
  • Intel. Pin User Manual. http://rogue.colorado.edu/Pin.
    Findings
  • Intel. Intel Itanium Architecture Software Developer’s Manual Vols 1-4, Oct. 2002.
    Google ScholarFindings
  • Intel. IA-32 Intel Architecture Software Developer’s Manual Vols 1-3, 2003.
    Google ScholarFindings
  • Intel. Intel Extended Memory 64 Technology Software Developer’s Guide Vols 1-2, 2004.
    Google ScholarFindings
  • Intel. Intel PXA27x Processor Family Developer’s Manual, April 2004.
    Google ScholarFindings
  • H.-S. Kim and J. Smith. Hardware support for control transfers in code caches. In Proceedings of the 36th Annual ACM/IEEE International Symposium on Microarchitecture, Dec 2003.
    Google ScholarLocate open access versionFindings
  • J. Larus and E. Schnarr. EEL: Machine-independent executable editing. In Proceedings of the ACM SIGPLAN 95 Conference on Programming Language Design and Implementation, pages 291– 300, June 1995.
    Google ScholarLocate open access versionFindings
  • P. Geoffrey Lowney, Stefan M. Freudenberger, Thomas J. Karzes, W. D. Lichtenstein, Robert P. Nix, John S. O’Donnell, and John C. Ruttenberg. The Multiflow Trace Scheduling compiler. The Journal of Supercomputing, 7(1-2):51–142, 1993.
    Google ScholarLocate open access versionFindings
  • Chi-Keung Luk, Robert Muth, Harish Patil, Robert Cohn, and Geoff Lowney. Ispike: A Post-link Optimizer for the Intel Itanium Architecture. In Proceedings of the 2nd Conference on Code Generation and Optimization, pages 15–26, 2004.
    Google ScholarLocate open access versionFindings
  • J. Maebe, M. Ronsse, and K. De Bosschere. Diota: Dynamic instrumentation, optimization and transformation of applications. In Compendium of Workshops and Tutorials held in conjunction with PACT’02, 2002.
    Google ScholarFindings
  • N. Nethercote and J. Seward. Valgrind: A program supervision framework. In Proceedings of the 3rd Workshop on Runtime Verification. http://valgrind.kde.org/, 2003.
    Locate open access versionFindings
  • H. Patil, R. Cohn, M. Charney, R. Kapoor, A. Sun, and A. Karunanidhi. Pinpointing representative portions of large intel itanium progams 2005/4/19 with dynamic instrumentation. In Proceedings of the 37th Annual ACM/IEEE International Symposium on Microarchitecture, Dec 2004.
    Google ScholarLocate open access versionFindings
  • M. Poletto and V. Sarkar. Linear scan register allocation. ACM Transactions. on Programming Languages and Systems, 21(5):895– 913, Sept 1999.
    Google ScholarLocate open access versionFindings
  • T. Romer, G. Voelker, D. Lee, A. Wolman, W. Wong, H. Levy, B. Bershad, and B. Chen. Instrumentation and optimization of win32/intel executables using Etch. In Proceedings of the USENIX Windows NT Workshop, pages 1–7, August 1997.
    Google ScholarLocate open access versionFindings
  • H. Saito, G. Gaertner, W. Jones, R. Eigenmann, H. Iwashita, R. Liberman, M. van Waveren, and B. Whitney. Large system performance of spec omp2001 benchmarks. In Proceedings of the 2002 Workship on OpenMP: Experiences and Implementation, 2002.
    Google ScholarLocate open access versionFindings
  • K. Scott, N. Kumar, S. Velusamy, B. Childers, J. Davidson, and M. L. Soffa. Reconfigurable and retargetable software dynamic translation. In Proceedings of the 1st Conference on Code Generation and Optimization, pages 36–47, 2003.
    Google ScholarLocate open access versionFindings
  • T. Sherwood, E. Perelman, G. Hamerly, and B. Calder. Automatically characterizing large scale program behavior. In Proceedings of the 10th International Conference on Architectural Support for Programming Languages and Operating Systems, Oct 2002.
    Google ScholarLocate open access versionFindings
  • A. Srivastava, A. Edwards, and H. Vo. Vulcan: Binary transformation in a distributed environment. Technical Report MSR-TR-2001-50, Microsoft Research, April 2001.
    Google ScholarFindings
  • A. Srivastava and A. Eustace. Atom: A system for building customized program analysis tools. In Proceedings of the ACM SIGPLAN 94 Conference on Programming Language Design and Implementation, pages 196–205, 1994.
    Google ScholarLocate open access versionFindings
  • X. Zhang, Z. Wang, N. Gloy, J. B. Chen, and M. D. Smith. System support for automatic profiling and optimization. In Proceedings of the 16th Symposium on Operating System Principles, October 1997.
    Google ScholarLocate open access versionFindings
Your rating :
0

 

Tags
Comments
数据免责声明
页面数据均来自互联网公开来源、合作出版商和通过AI技术自动分析结果,我们不对页面数据的有效性、准确性、正确性、可靠性、完整性和及时性做出任何承诺和保证。若有疑问,可以通过电子邮件方式联系我们:report@aminer.cn
小科