论文标题
区域轨道:基于痕量的声音和完整的检查器,可调试交易原子性违规和不可隔离的痕迹
RegionTrack: A Trace-based Sound and Complete Checker to Debug Transactional Atomicity Violations and Non-Serializable Traces
论文作者
论文摘要
原子性是正确的标准,可以在多线程程序中同时执行多线程中的隔离代码区域。但是,这些代码区域(称为交易)的动态实例可能无法原子能表现,从而导致交易原子性违反。现有的动态在线原子能检查器会在检测出违反交易的交易时会产生误报或假否定性。本文提出了区域轨道。区域轨道跟踪事件,动态子区域和交易水平的跨线程依赖。它通过其新型的时间戳传播方法在某些交易中保持动态子区域和交易发生。我们证明,在检测交易原子性违规和不可隔离的痕迹方面,区域轨道是合理的,并且是完整的。据我们所知,这是第一种在线技术,它准确地捕获了与上述两种问题的每项运行交易相对于所有相互冲突事件的关系的传统封闭。我们已经评估了Dacapo和Java Grande论坛基准的19个主题的区域轨道。经验结果证实,区域轨道精确地检测到了所有经历过交易原子性违规的交易,并确定了所有不可异式的痕迹。总体结果还表明,比赛车室的区域跟踪分别比速度值低1.10倍和1.08倍的内存和运行时开销,分别为2.10倍和1.21倍,低于机场。此外,它比DoubleChecker产生了2.89倍的内存开销。平均而言,赛车场的违规行为比RegionTrack少约55%,而违规行为又报告了违规行为的违规行为比DoubleChecker少了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.