Michael D. Bond, Milind Kulkarni, Man Cao, Meisam Fathi Salmi, Jipeng Huang
{"title":"Efficient Deterministic Replay of Multithreaded Executions in a Managed Language Virtual Machine","authors":"Michael D. Bond, Milind Kulkarni, Man Cao, Meisam Fathi Salmi, Jipeng Huang","doi":"10.1145/2807426.2807434","DOIUrl":null,"url":null,"abstract":"Shared-memory parallel programs are inherently nondeterministic, making it difficult to diagnose rare bugs and to achieve deterministic execution. Existing multithreaded record & replay approaches have serious limitations such as relying on custom hardware, handling only data-race-free executions, or slowing programs by an order of magnitude. Furthermore, language virtual machines (VMs) such as Java VMs (JVMs) introduce various sources of nondeterminism that thwart demonstrating deterministic replay. This paper introduces an approach for multithreaded record & replay based on tracking and reproducing shared-memory dependences accurately and efficiently. Building on prior work that introduces an efficient dependence recorder, we develop a new analysis for replaying dependences. To demonstrate multithreaded record & replay, we modify a JVM to support a new methodology that enables demonstrating and evaluating replay in the inherently nondeterministic JVM. Overall, the performance of both recorded and replayed executions compares favorably with performance reported by prior work for competing record & replay approaches.","PeriodicalId":104024,"journal":{"name":"Proceedings of the Principles and Practices of Programming on The Java Platform","volume":"1990 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2015-09-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"15","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings of the Principles and Practices of Programming on The Java Platform","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/2807426.2807434","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 15
Abstract
Shared-memory parallel programs are inherently nondeterministic, making it difficult to diagnose rare bugs and to achieve deterministic execution. Existing multithreaded record & replay approaches have serious limitations such as relying on custom hardware, handling only data-race-free executions, or slowing programs by an order of magnitude. Furthermore, language virtual machines (VMs) such as Java VMs (JVMs) introduce various sources of nondeterminism that thwart demonstrating deterministic replay. This paper introduces an approach for multithreaded record & replay based on tracking and reproducing shared-memory dependences accurately and efficiently. Building on prior work that introduces an efficient dependence recorder, we develop a new analysis for replaying dependences. To demonstrate multithreaded record & replay, we modify a JVM to support a new methodology that enables demonstrating and evaluating replay in the inherently nondeterministic JVM. Overall, the performance of both recorded and replayed executions compares favorably with performance reported by prior work for competing record & replay approaches.
共享内存并行程序本质上是不确定的,这使得诊断罕见的错误和实现确定性执行变得困难。现有的多线程记录和重放方法有严重的局限性,比如依赖自定义硬件,只处理无数据竞争的执行,或者减慢程序的数量级。此外,语言虚拟机(vm),如Java vm (jvm)引入了各种各样的不确定性来源,阻碍了对确定性重放的演示。本文介绍了一种基于精确、高效地跟踪和再现共享内存依赖关系的多线程录放方法。在先前引入高效依赖记录器的工作的基础上,我们开发了一种用于重放依赖的新分析。为了演示多线程记录和重放,我们修改了JVM以支持一种新的方法,该方法可以在固有的不确定性JVM中演示和评估重放。总的来说,记录和重播执行的性能都优于先前的记录和重播方法所报告的性能。