Process-shared and persistent code caches

  • Authors:
  • Derek Bruening;Vladimir Kiriansky

  • Affiliations:
  • VMware: Inc., Palo Alto, CA;VMware: Inc., Palo Alto, CA

  • Venue:
  • Proceedings of the fourth ACM SIGPLAN/SIGOPS international conference on Virtual execution environments
  • Year:
  • 2008

Quantified Score

Hi-index 0.00

Visualization

Abstract

Software code caches are increasingly being used to amortizethe runtime overhead of tools such as dynamic optimizers, simulators, and instrumentation engines. The additional memory consumed by these caches, along with the data structures used to manage them, limits the scalability of dynamic tool deployment. Inter-process sharing of code caches significantly improves the ability to efficiently apply code caching tools to many processes simultaneously. In this paper, we present a method of code cache sharing among processes for dynamic tools operating on native applications. Our design also supports code cache persistence for improved cold code execution in short-lived processes or long initialization sequences. Sharing raises security concerns, and we show how to achieve sharing without risk of privilege escalation and with read-only code caches and associated data structures. We evaluate process-shared and persisted code caches implemented in the DynamoRIO industrial-strength dynamic instrumentation engine, where we achieve a two-thirds reduction in both memory usage and startup time.