Cyrus: Unintrusive application-level record-replay for replay parallelism

Nima Honarmand, Nathan Dautenhahn, Josep Torrellas, Samuel T. King, Gilles Pokam, Cristiano Pereira

Research output: Contribution to journalArticlepeer-review

Abstract

Architectures for deterministic record-replay (R&R) of multithreaded code are attractive for program debugging, intrusion analysis, and fault-tolerance uses. However, very few of the proposed designs have focused on maximizing replay speed - a key enabling property of these systems. The few efforts that focus on replay speed require intrusive hardware or software modifications, or target whole-system R&R rather than the more useful applicationlevel R&R. This paper presents the first hardware-based scheme for unintrusive, application-level R&R that explicitly targets high replay speed. Our scheme, called Cyrus, requires no modification to commodity snoopy cache coherence. It introduces the concept of an onthe- fly software Backend Pass during recording which, as the log is being generated, transforms it for high replay parallelism. This pass also fixes-up the log, and can flexibly trade-off replay parallelism for log size.We analyze the performance of Cyrus using full system (OS plus hardware) simulation. Our results show that Cyrus has negligible recording overhead. In addition, for 8-processor runs of SPLASH-2, Cyrus attains an average replay parallelism of 5, and a replay speed that is, on average, only about 50% lower than the recording speed.

Original languageEnglish (US)
Pages (from-to)193-206
Number of pages14
JournalACM SIGPLAN Notices
Volume48
Issue number4
DOIs
StatePublished - Apr 2013

Keywords

  • Application-level Parallel Replay
  • Backend Log Processing
  • Deterministic Replay
  • Source-only Recording
  • Unintrusive Hardware-Assisted Recording

ASJC Scopus subject areas

  • Computer Science(all)

Fingerprint Dive into the research topics of 'Cyrus: Unintrusive application-level record-replay for replay parallelism'. Together they form a unique fingerprint.

Cite this