当前位置: X-MOL 学术ACM Trans. Program. Lang. Syst. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Dynamic Deadlock Verification for General Barrier Synchronisation
ACM Transactions on Programming Languages and Systems ( IF 1.3 ) Pub Date : 2018-12-11 , DOI: 10.1145/3229060
Tiago Cogumbreiro 1 , Raymond Hu 2 , Francisco Martins 3 , Nobuko Yoshida 2
Affiliation  

We present Armus, a verification tool for dynamically detecting or avoiding barrier deadlocks. The core design of Armus is based on phasers, a generalisation of barriers that supports split-phase synchronisation, dynamic membership, and optional-waits. This allows Armus to handle the key barrier synchronisation patterns found in modern languages and libraries. We implement Armus for X10 and Java, giving the first sound and complete barrier deadlock verification tools in these settings. Armus introduces a novel event-based graph model of barrier concurrency constraints that distinguishes task-event and event-task dependencies. Decoupling these two kinds of dependencies facilitates the verification of distributed barriers with dynamic membership, a challenging feature of X10. Further, our base graph representation can be dynamically switched between a task-to-task model, Wait-for Graph (WFG), and an event-to-event model, State Graph (SG), to improve the scalability of the analysis. Formally, we show that the verification is sound and complete with respect to the occurrence of deadlock in our core phaser language, and that switching graph representations preserves the soundness and completeness properties. These results are machine checked with the Coq proof assistant. Practically, we evaluate the runtime overhead of our implementations using three benchmark suites in local and distributed scenarios. Regarding deadlock detection, distributed scenarios show negligible overheads and local scenarios show overheads below 1.15×. Deadlock avoidance is more demanding, and highlights the potential gains from dynamic graph selection. In one benchmark scenario, the runtime overheads vary from 1.8× for dynamic selection, 2.6× for SG-static selection, and 5.9× for WFG-static selection.

中文翻译:

通用屏障同步的动态死锁验证

我们介绍了 Armus,一种用于动态检测或避免屏障死锁的验证工具。Armus 的核心设计基于 Phaser,这是支持分阶段同步、动态成员资格和可选等待的障碍的泛化。这允许 Armus 处理现代语言和库中的关键屏障同步模式。我们为 X10 和 Java 实现了 Armus,在这些设置中提供了第一个健全和完整的屏障死锁验证工具。Armus 引入了一种新颖的基于事件的屏障并发约束图模型,可区分任务-事件和事件-任务依赖关系。解耦这两种依赖关系有助于验证具有动态成员资格的分布式障碍,这是 X10 的一个具有挑战性的特性。进一步,我们的基本图表示可以在任务到任务模型、等待图 (WFG) 和事件到事件模型、状态图 (SG) 之间动态切换,以提高分析的可扩展性。形式上,我们证明了在我们的核心移相器语言中发生死锁的验证是健全和完整的,并且切换图表示保留了健全性和完整性属性。这些结果是用 Coq 证明助手进行机器检查的。实际上,我们在本地和分布式场景中使用三个基准套件来评估我们实现的运行时开销。关于死锁检测,分布式场景的开销可以忽略不计,而本地场景的开销低于 1.15 倍。死锁避免要求更高,并突出了动态图选择的潜在收益。
更新日期:2018-12-11
down
wechat
bug