ACM Home Page
Please provide us with feedback. Feedback
Pin: building customized program analysis tools with dynamic instrumentation
Full text PdfPdf (301 KB)
Source Conference on Programming Language Design and Implementation archive
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation table of contents
Chicago, IL, USA
SESSION: Instrumentation and testing table of contents
Pages: 190 - 200  
Year of Publication: 2005
ISBN:1-59593-056-6
Also published in ...
Authors
Chi-Keung Luk  Intel Corporation
Robert Cohn  Intel Corporation
Robert Muth  Intel Corporation
Harish Patil  Intel Corporation
Artur Klauser  Intel Corporation
Geoff Lowney  Intel Corporation
Steven Wallace  Intel Corporation
Vijay Janapa Reddi  University of Colorado
Kim Hazelwood  Intel Corporation
Sponsors
SIGPLAN: ACM Special Interest Group on Programming Languages
ACM: Association for Computing Machinery
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 72,   Downloads (12 Months): 537,   Citation Count: 159
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1065010.1065034
What is a DOI?

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 tools (called Pintools) are written in C/C++ using Pin's rich API. Pin follows the model of ATOM, allowing the tool writer to analyze an application at the instruction level without the need for detailed knowledge of the underlying instruction set. The API is designed to be architecture independent whenever possible, making Pintools source compatible across different architectures. However, a Pintool can access architecture-specific details when necessary. Instrumentation with Pin is mostly transparent as the application and Pintool observe the application's original, uninstrumented behavior. Pin uses dynamic compilation to instrument executables while they are running. For efficiency, Pin uses several techniques, including inlining, register re-allocation, liveness analysis, and instruction scheduling to optimize instrumentation. This fully automated approach delivers significantly better instrumentation performance than similar tools. For example, Pin is 3.3x faster than Valgrind and 2x faster than DynamoRIO for basic-block counting. To illustrate Pin's versatility, we describe two Pintools in daily use to analyze production software. Pin is publicly available for Linux platforms on four architectures: IA32 (32-bit x86), EM64T (64-bit x86), Itanium®, and ARM. In the ten months since Pin 2 was released in July 2004, there have been over 3000 downloads from its website.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
AMBER home page. http://amber.scripps.edu/.
 
2
Fluent home page. http://www.fluent.com/.
 
3
LS-DYNA home page. http://www.lstc.com/.
 
4
RenderMan home page. http://RenderMan.pixar.com/.
 
5
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.
 
6
 
7
8
 
9
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.
 
10
K.D. Cooper, M.W. Hall, and K. Kennedy. A methodology for procedure cloning. Computer Languages, 19(2), April 1993.
 
11
 
12
Intel. Pin User Manual. http://rogue.colorado.edu/Pin.
 
13
Intel. Intel Itanium Architecture Software Developer's Manual Vols 1-4, Oct. 2002.
 
14
Intel. IA-32 Intel Architecture Software Developer's Manual Vols 1-3, 2003.
 
15
Intel. Intel Extended Memory 64 Technology Software Developer's Guide Vols 1-2, 2004.
 
16
Intel. Intel PXA27x Processor Family Developer's Manual, April 2004.
 
17
18
 
19
 
20
 
21
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.
 
22
N. Nethercote and J. Seward. Valgrind: A program supervision framework. In Proceedings of the 3rd Workshop on Runtime Verification. http://valgrind.kde.org/, 2003.
 
23
24
 
25
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.
 
26
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.
 
27
28
 
29
A. Srivastava, A. Edwards, and H. Vo. Vulcan: Binary transformation in a distributed environment. Technical Report MSR-TR-2001-50, Microsoft Research, April 2001.
30
31

CITED BY  158

Collaborative Colleagues:
Chi-Keung Luk: colleagues
Robert Cohn: colleagues
Robert Muth: colleagues
Harish Patil: colleagues
Artur Klauser: colleagues
Geoff Lowney: colleagues
Steven Wallace: colleagues
Vijay Janapa Reddi: colleagues
Kim Hazelwood: colleagues