Skip to main navigation Skip to search Skip to main content

Stabilizers: A modular checkpointing abstraction for concurrent functional programs

  • Purdue University

Research output: Contribution to journalArticlepeer-review

6 Scopus citations

Abstract

Transient faults that arise in large-scale software systems can often be repaired by re-executing the code in which they occur. Ascribing a meaningful semantics for safe re-execution in multi-threaded code is not obvious, however. For a thread to correctly re-execute a region of code, it must ensure that all other threads which have witnessed its unwanted effects within that region are also reverted to a meaningful earlier state. If not done properly, data inconsistencies and other undesirable behavior may result. However, automatically determining what constitutes a consistent global checkpoint is not straightforward since thread interactions are a dynamic property of the program. In this paper, we present a safe and efficient checkpointing mechanism for Concurrent ML (CML) that can be used to recover from transient faults. We introduce a new linguistic abstraction called stabilizers that permits the specification of per-thread monitors and the restoration of globally consistent checkpoints. Safe global states are computed through lightweight monitoring of communication events among threads (e.g. message-passing operations or updates to shared variables). Our experimental results on several realistic, multithreaded, server-style CML applications, including a web server and a windowing toolkit, show that the overheads to use stabilizers are small, and lead us to conclude that they are a viable mechanism for defining safe checkpoints in concurrent functional programs.

Original languageEnglish
Pages (from-to)136-147
Number of pages12
JournalACM SIGPLAN Notices
Volume41
Issue number9
DOIs
StatePublished - Sep 2006

Keywords

  • Checkpointing
  • Concurrent ML
  • Concurrent programming
  • Error recovery
  • Exception handling
  • Transactions

Fingerprint

Dive into the research topics of 'Stabilizers: A modular checkpointing abstraction for concurrent functional programs'. Together they form a unique fingerprint.

Cite this