About Pin.
Pin is a dynamic instrumentation system provided by Intel (http://rogue.colorado.edu/Pin),
which allows C/C++ introspection code to be injected at arbitrary places in a running executable. The
injected introspection code is used to observe the behavior of the program, and can be used to write a
variety of tools, including application profilers, memory leak detectors, and trace generators for the IA32,
Intel64, Itanium and XScale platforms. Pin provides a rich API that abstracts away the underlying
instruction set idiosyncrasies and allows context information such as register contents to be passed to the
injected code as parameters. Pin automatically saves and restores registers that are overwritten by the
injected code so the application continues to execute normally. Pin makes it easy to do studies on
complex real-life applications, which makes it a useful tool not only for research, but also for education.
Tutorial Objective .
The tutorial targets researchers, students, and educators alike, and provides a detailed look at Pin as a
mechanism for rapid prototyping. The tutorial is comprised of three learning components. The first
component provides a brief insight into the workings of Pin, and introduces its fundamental
instrumentation structures and concepts. The second component introduces useful Pin-based tools that are
freely available for download, and presents advanced mechanisms for reducing runtime overheads. The
last component integrates the first two components via a hands-on session allowing users to gain
immediate experience in understanding the ease of writing fundamental, as well as advanced Pin tools.
Tutorial Schedule (Slides)
Part One: Overview, Key Concepts (50 min)
The first part of the tutorial provides an introduction to Pin and its basic API for writing instrumentation
tools (Pintools). Simple Pintools are used to motivate and explain Pin's just-in-time and ahead-of-time
instrumentation features. In addition, we will familiarize the attendees with the various components that
make up a distributed Pin kit.
[15 minute break]
Part Two: Advanced Features and Applications (60 min)
Many opportunities exist for optimizing your use of Pin. In this part of the tutorial, we focus on various
tips and tricks for improving instrumentation performance. We also discuss numerous sample applications
of Pin. Industry-strength Pin-based tools, such as PinPoints (an execution trace generator) and PinSEL (a
system call emulator), are presented to highlight the system's robust and powerful program introspection
capabilities.
Pin's largest value comes from its utility in the research community. The tutorial highlights concepts that
appeal to language and compiler researchers: memory leak detectors, race condition detectors, and
profilers. We include concepts that will appeal to computer architecture researchers: cache simulation,
branch prediction, temperature, power, multi-core simulation. Finally, we include concepts that will
appeal to operating systems researchers: multi-process simulation, system call emulation, and the PinOS
system which operates below (and is therefore able to observe) the operating system.
[15 minute break]
Part Three: Hands-On Interactive Tutorial (100 min)
The final part of the tutorial progresses from theory to practice, allowing attendees to gain hands-on
experience writing, building, and running Pintools. We will guide audience members through the process
of extending existing Pintools to achieve specific goals, which will vary from simple profiling tasks to
more sophisticated runtime modifications. We will also hear tips and experiences from existing Pin users
that we have selected from the Pinheads mailing list. Finally, we will make certain that each attendee
learns exactly how and where to go to learn more.
Presenter Bios .
Kim Hazelwood
is an Assistant Professor of Computer Science at the University of Virginia and a
faculty consultant for Intel. Her research lies at the interface of compilers and computer architecture,
where she focuses on virtual execution environments, their applications, and their implementation. Prior
to joining UVa in 2005, Kim held a post-doc position with the Intel Pin team. She has also contributed to
several similar projects, including Dynamo, CarbonFire, DELI, DynamoRIO, and Jikes RVM. Kim
received her Ph.D. from Harvard University in 2004.
|
Vijay Janapa Reddi
is a Ph.D. student at Harvard University working under the direction of Professor
David M. Brooks and Professor Michael D. Smith. His research interests include
understanding optimization opportunities using virtual
machines and their performance bottlenecks for future multi- and many-core environments. He received
his M.S. degree from the University of Colorado at Boulder, where he collaborated with Intel to develop
Pin.
|
|