RegionTrack:一种基于迹的、可靠且完备的检查器,用于调试事务原子性违例与不可串行化迹
软件工程
2020-10-22 v2
摘要
原子性是一种正确性准则,用于在多线程程序中并发执行时推理隔离的代码区域。然而,这些代码区域的动态实例(称为事务)可能未能以原子方式行为,从而导致事务原子性违例。现有的动态在线原子性检查器在检测经历事务原子性违例的事务时,要么产生误报,要么产生漏报。本文提出 RegionTrack。RegionTrack 在事件、动态子区域和事务三个层次上追踪跨线程依赖关系。它通过其新颖的时间戳传播方法,维护所选事务内的动态子区域以及事务间 happens-before 关系。我们证明,RegionTrack 在检测事务原子性违例和不可串行化迹方面是可靠且完备的。据我们所知,它是首个针对上述两类问题精确捕获每个运行事务所有冲突事件上传递闭包 happens-before 关系集合的在线技术。我们已在 DaCapo 和 Java Grande Forum 基准测试的 19 个对象上评估了 RegionTrack。实证结果证实,RegionTrack 精确检测到了所有经历事务原子性违例的事务,并识别出了所有不可串行化迹。总体结果还显示,RegionTrack 的内存与运行时间开销分别比 Velodrome 低 1.10 倍和 1.08 倍,比 Aerodrome 低 2.10 倍和 1.21 倍。此外,其内存开销比 DoubleChecker 低 2.89 倍。平均而言,Velodrome 检测到的违例比 RegionTrack 少约 55%,而后者报告的违例又比 DoubleChecker 少约 3%–70%。
引用
@article{arxiv.2008.04479,
title = {RegionTrack: A Trace-based Sound and Complete Checker to Debug Transactional Atomicity Violations and Non-Serializable Traces},
author = {Xiaoxue Ma and Shangru Wu and Ernest Pobee and Xiupei Mei and Hao Zhang and Bo Jiang and Wing-Kwong Chan},
journal= {arXiv preprint arXiv:2008.04479},
year = {2020}
}
备注
48 pages