一句话:提出 TPLAY,将线程事件划分为事务,在事务级记录共享内存访问交错,显著减小日志并提高重放成功率。
多线程程序的确定性重放常面临记录日志过大、重放条件受限的问题。本文提出基于事务的 TPLAY 技术:把每个线程的事件序列切分为称为事务的连续块,利用程序执行期间事务间通常很少或没有原子性违例这一观察,在事务粒度记录共享内存位置上的线程访问交错;当某事务报告原子性违例时,TPLAY 会生成一对人工交错以支持重放。作者在 PARSEC 基准套件的 Splash2x 扩展上进行实验。结果表明,与既有工作相比,TPLAY 的日志大小缩小约 13 倍,并取得更高的重放概率。
Existing deterministic replay techniques propose strategies which attempt to reduce record log sizes and achieve successful replay. However, these techniques still generate large logs and achieve replay only under certain conditions. We propose a solution based on the division of the sequence of events of each thread into sequential blocks called transactions. Our insight is that there are usually few to no atomicity violations among transactions reported during a program execution. We present TPLAY, a novel deterministic replay technique which records thread access interleavings on shared memory locations at the transactional level. TPLAY also generates an artificial pair of interleavings when an atomicity violation is reported on a transaction. We present an experiment using the Splash2x extension of the PARSEC benchmark suite. Experimental results indicate that TPLAY experiences a 13-fold improvement in record log sizes and achieves a higher replay probability in comparison to existing work.
DOI 原文 ·
@inproceedings{paperbot5239,
title = {Efficient Transaction-Based Deterministic Replay for Multi-threaded Programs},
author = {Ernest Pobee and Xiupei Mei and W.K. Chan},
booktitle = {ASE},
year = {2019},
doi = {10.1109/ase.2019.00076}
}