Compiler support for fine-grain software-only checkpointing

  • Authors:
  • Chuck (Chengyan) Zhao;J. Gregory Steffan;Cristiana Amza;Allan Kielstra

  • Affiliations:
  • Department of Electrical and Computer Engineering, University of Toronto, Canada;Department of Electrical and Computer Engineering, University of Toronto, Canada;Department of Electrical and Computer Engineering, University of Toronto, Canada;IBM Canada Toronto Laboratory, Canada

  • Venue:
  • CC'12 Proceedings of the 21st international conference on Compiler Construction
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

Abstract

Checkpointing support allows program execution to roll-back to an earlier program point, discarding any modifications made since that point. Existing software-based checkpointing methods are mainly libraries that snapshot all of working-memory, and hence have prohibitive overhead for many potential applications. In this paper we present a light-weight, fine-grain checkpointing framework implemented entirely in software through compiler transformations and optimizations. A programmer can specify arbitrary checkpoint regions via a simple API, and the compiler automatically transforms the code to implement the checkpoint at the granularity of individual stores, optimizing to remove redundancy. We explore two application areas for this support. First, we investigate its application to debugging, in particular by providing the ability to rewind to an arbitrarily-placed point in a buggy program's execution. A study using BugBench applications shows that our compiler-based approach is more than 100x less overhead than full-process checkpointing. Second, we demonstrate that compiler-based checkpointing support can be leveraged to free the programmer from manually implementing and maintaining software rollback mechanisms when coding a back-tracking algorithm, with runtime overhead of only 15% compared to the manual implementation.