Parallelisation of the Valgrind Dynamic Binary Instrumentation Framework

  • Authors:
  • Daniel Robson;Peter Strazdins

  • Affiliations:
  • -;-

  • Venue:
  • ISPA '08 Proceedings of the 2008 IEEE International Symposium on Parallel and Distributed Processing with Applications
  • Year:
  • 2008

Quantified Score

Hi-index 0.00

Visualization

Abstract

Valgrind is a dynamic binary translation and instrumentation framework. It is suited to analysing memory usage. It is used in memory validation and profiling tools. Currently, Valgrind is restricted to executing a guest with serialised thread scheduling. This results in lost opportunity for performance when analysing highly parallel applications on parallel architectures. We have extended the framework to allow parallel execution of guest threads. Code caching mechanisms have been made thread-safe, by delaying flushing of translated code, while preserving critical areas of performance. Three methods which preserve atomicity of instructions are implemented and evaluated with respect to speed, reliability and instrumentation effects. Serialising both store and atomic operations preserves atomicity in the strongest sense, but suffers unacceptable performance overhead. Serialising only atomic instructions or utilising host atomic instructions provides speedup in line with native execution. These methods show average slow downs of only 2.6脳 and multithreaded 2.2脳 over native parallel execution respectively.