Recent demand for distributed software had led to a surge in popularity in actor-based frameworks. However, even with the stylized message passing model of actors, writing correct distributed software is still difficult. We present our work on linearizability checking in DS2, an integrated framework for specifying, synthesizing, and testing distributed actor systems. The key insight of our approach is that often subcomponents of distributed actor systems represent common algorithms or data structures (e.g.\ a distributed hash table or tree) that can be validated against a simple sequential model of the system. This makes it easy for developers to validate their concurrent actor systems without complex specifications. DS2 automatically explores the concurrent schedules that system could arrive at, and it compares observed output of the system to ensure it is equivalent to what the sequential implementation could have produced. We describe DS2's linearizability checking and test it on several concurrent replication algorithms from the literature. We explore in detail how different algorithms for enumerating the model schedule space fare in finding bugs in actor systems, and we present our own refinements on algorithms for exploring actor system schedules that we show are effective in finding bugs.
翻译:最近对分布式软件的需求导致基于行为者的框架的受欢迎度急剧上升。然而,即使存在星际信息传递模式的行为者,写正确分布式软件仍很困难。我们在DS2中介绍了我们关于线性检查的工作,DS2是一个用于指定、合成和测试分布式行为者系统的综合框架。我们的方法的关键洞察力是,分布式行为者系统的子构件往往代表共同的算法或数据结构(例如,一个分布式散装散列表或树),可以对照系统的简单顺序模型进行验证。这使得开发者很容易在没有复杂规格的情况下验证其同时存在的行为者系统。DS2自动探索系统可以实现的同步时间表,并将所观察到的系统产出进行比较,以确保它与顺序实施能够产生的结果相仿。我们用文献中的一些并行的复制算法来描述DS2的线性检查和测试它。我们详细探讨如何用不同的算法来计算模型时间表空间在查找行为者系统中的错误,我们用自己的精细的算法来探索我们所显示的错误的有效方法。