Effective Concurrency Testing for Distributed Systems

Effective Concurrency Testing for Distributed Systems
复制标题

分布式系统的有效并发测试

DOI:
--
复制
发表时间:
2020
期刊:
International Conference on Architectural Support for Programming Languages and Operating Systems
影响因子:
--
通讯作者:
Junfeng Yang
Junfeng Yang
中科院分区:
--
文献类型:
--
作者:
Xinhao Yuan;Junfeng Yang

文献摘要

被引文献

相似文献

尽管部署了广泛的部署,但分布式系统仍然很难理解。同时操作和失败的意外交错可能导致不确定的行为并造成严重后果。我们提出了Morpheus,这是第一个并发测试工具利用部分顺序采样的工具,这是一种正式分析和经验验证的随机测试方法,可为真实世界分布式系统提供强大的概率保证。 Morpheus引入了冲突分析,以通过预测和专注于影响测试结果的操作进一步改善随机测试。受到使用高级语言和框架的构建分布式系统的转变的启发,Morpheus Toargets Erlang。对Erlang的四个流行分布式系统的评估,包括RabbitMQ,消息经纪服务和Erlang标准库中的分布式数据库Mnesia,表明Morpheus有效:它在每个系统中发现了以前未知的错误,总计11个,所有这些错误是其核心方案中的缺陷,可能导致死锁,意外崩溃或不一致的状态。
Despite their wide deployment, distributed systems remain notoriously hard to reason about. Unexpected interleavings of concurrent operations and failures may lead to undefined behaviors and cause serious consequences. We present Morpheus, the first concurrency testing tool leveraging partial order sampling, a randomized testing method formally analyzed and empirically validated to provide strong probabilistic guarantees of error-detection, for real-world distributed systems. Morpheus introduces conflict analysis to further improve randomized testing by predicting and focusing on operations that affect the testing result. Inspired by the recent shift in building distributed systems using higher-level languages and frameworks, Morpheus targets Erlang. Evaluation on four popular distributed systems in Erlang including RabbitMQ, a message broker service, and Mnesia, a distributed database in the Erlang standard libraries, shows that Morpheus is effective: It found previously unknown errors in every system checked, 11 total, all of which are flaws in their core protocols that may cause deadlocks, unexpected crashes, or inconsistent states.