Scalable support for multithreaded applications on dynamic binary instrumentation systems

  • Authors:
  • Kim Hazelwood;Greg Lueck;Robert Cohn

  • Affiliations:
  • University of Virginia, Charlottesville, VA, USA;Intel Corporation, Hudson, MA, USA;Intel Corporation, Hudson, MA, USA

  • Venue:
  • Proceedings of the 2009 international symposium on Memory management
  • Year:
  • 2009

Quantified Score

Hi-index 0.00

Visualization

Abstract

Dynamic binary instrumentation systems are used to inject or modify arbitrary instructions in existing binary applications; several such systems have been developed over the past decade. Much of the literature describing the internal architecture and performance of these systems has focused on executing single-threaded guest applications. In this paper, we discuss the specific design decisions necessary for supporting large, multithreaded applications on JIT-based dynamic instrumentation systems. While implementing a working solution for multithreading is straightforward, providing a system that scales in terms of memory and performance is much more intricate. We highlight the design decisions in the latest version of the Pin dynamic instrumentation system, including the just-in-time compiler, the emulator, and the code cache. The overall design strives to provide scalable performance and memory footprints on modern applications.