RegionTrack:一种基于跟踪的完整的可检测传输原子性违规和不可串行化跟踪的方法
RegionTrack: A Trace-based Sound and Complete Checker to Debug Transactional Atomicity Violations and Non-Serializable Traces
摘要:
原子性是一种正确性标准,用于在多线程程序中并行执行隔离的代码区域时对其进行推理。但是,这些代码区域的动态实例(称为事务)可能无法以原子方式运行,从而导致事务原子性违规。现有的动态在线原子性检查器在检测遇到事务原子性违反的事务时会导致误报或漏报。本文提出了RegionTrack。RegionTrack在事件、动态子区域和事务级别跟踪跨线程依赖关系。它通过其新颖的时间戳传播方法在选定的事务和事务发生之前的关系中维护动态子区域。我们证明了RegionTrack在检测事务原子性违反和不可序列化的痕迹方面是健全和完整的。据我们所知,这是第一个在线技术,精确地捕捉了所有冲突事件的happens-before关系的传递闭合集,这些冲突事件与上述两种问题的每个正在运行的事务有关。我们已经评估了19个主题的DaCapo和Java Grande论坛基准RegionTrack。实证结果证实,RegionTrack精确地检测到所有那些经历了事务原子性违规的事务,并识别出所有不可序列化的痕迹。总体结果还显示,RegionTrack的内存和运行时开销分别比Velodrome低1.10倍和1.08倍,比Aerodrome低2.10倍和1.21倍。此外,它产生的内存开销比DoubleCore低2.89倍。平均而言,Velodrome检测到的违规行为比RegionTrack少55%,而RegionTrack报告的违规行为比DoubleTrack少3%-70%。
英文摘要:
Atomicity is a correctness criterion to reason about isolated code regions in a multithreaded program when they are executed concurrently. However, dynamic instances of these code regions, called transactions, may fail to behave atomically, resulting in transactional atomicity violations. Existing dynamic online atomicity checkers incur either false positives or false negatives in detecting transactions experiencing transactional atomicity violations. This paper proposes RegionTrack. RegionTrack tracks cross-thread dependences at the event, dynamic subregion, and transaction levels. It maintains both dynamic subregions within selected transactions and transactional happens-before relations through its novel timestamp propagation approach. We prove that RegionTrack is sound and complete in detecting both transactional atomicity violations and non-serializable traces. To the best of our knowledge, it is the first online technique that precisely captures the transitively closed set of happens-before relations over all conflicting events with respect to every running transaction for the above two kinds of issues. We have evaluated RegionTrack on 19 subjects of the DaCapo and the Java Grande Forum benchmarks. The empirical results confirm that RegionTrack precisely detected all those transactions which experienced transactional atomicity violations and identified all non-serializable traces. The overall results also show that RegionTrack incurred 1.10x and 1.08x lower memory and runtime overheads than Velodrome and 2.10x and 1.21x lower than Aerodrome, respectively. Moreover, it incurred 2.89x lower memory overhead than DoubleChecker. On average, Velodrome detected about 55% fewer violations than RegionTrack, which in turn reported about 3%-70% fewer violations than DoubleChecker.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。