当前位置: X-MOL 学术ACM Trans. Softw. Eng. Methodol. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
RegionTrack
ACM Transactions on Software Engineering and Methodology ( IF 6.6 ) Pub Date : 2020-12-31 , DOI: 10.1145/3412377
Xiaoxue Ma 1 , Shangru Wu 1 , Ernest Pobee 1 , Xiupei Mei 1 , Hao Zhang 1 , Bo Jiang 2 , Wing-Kwong Chan 1
Affiliation  

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 article proposes <monospace>RegionTrack</monospace>. <monospace>RegionTrack</monospace> 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 <monospace>RegionTrack</monospace> 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 <monospace>RegionTrack</monospace> on 19 subjects of the DaCapo and the Java Grande Forum benchmarks. The empirical results confirm that <monospace>RegionTrack</monospace> precisely detected all those transactions which experienced transactional atomicity violations and identified all non-serializable traces. The overall results also show that <monospace>RegionTrack</monospace> incurred 1.10x and 1.08x lower memory and runtime overheads than <monospace>Velodrome</monospace> and 2.10x and 1.21x lower than <monospace>Aerodrome</monospace>, respectively. Moreover, it incurred 2.89x lower memory overhead than <monospace>DoubleChecker</monospace>. On average, <monospace>Velodrome</monospace> detected about 55% fewer violations than <monospace>RegionTrack</monospace>, which in turn reported about 3%–70% fewer violations than <monospace>DoubleChecker</monospace>.

中文翻译:

区域跟踪

原子性是一个正确性标准,用于在多线程程序中同时执行隔离代码区域时对其进行推理。但是,这些代码区域的动态实例称为交易, 可能无法以原子方式运行,从而导致事务原子性违规。现有的动态在线原子性检查器在检测遇到事务原子性违规的交易时会产生误报或误报。本文提出<monospace>RegionTrack</monospace>。<monospace>RegionTrack</monospace> 在事件、动态子区域和事务级别跟踪跨线程依赖关系。它通过其新颖的时间戳传播方法维护选定事务中的动态子区域和事务发生前的关系。我们证明 <monospace>RegionTrack</monospace> 在检测事务原子性违规和不可序列化跟踪方面是健全且完整的。据我们所知,它是第一个在线技术,针对上述两种问题,针对所有正在运行的事务,精确地捕获所有冲突事件的可传递关闭的发生前关系集。我们在 DaCapo 和 Java Grande 论坛基准测试的 19 个主题上评估了 <monospace>RegionTrack</monospace>。实证结果证实,<monospace>RegionTrack</monospace> 准确地检测到了所有违反事务原子性的事务,并识别了所有不可序列化的痕迹。总体结果还表明,<monospace>RegionTrack</monospace> 的内存和运行时开销比 <monospace>Velodrome</monospace> 低 1.10 倍和 1.08 倍,比 <monospace>Aerodrome</monospace> 低 2.10 倍和 1.21 倍, 分别。此外,它产生的内存开销比 <monospace>DoubleChecker</monospace> 低 2.89 倍。平均而言,<monospace>Velodrome</monospace> 检测到的违规行为比 <monospace>RegionTrack</monospace> 少 55%,而后者报告的违规行为比 <monospace>DoubleChecker</monospace> 少 3%–70%。
更新日期:2020-12-31
down
wechat
bug