一句话:研究 Erlang 分布式 actor 模型的可扩展性瓶颈,在 VM、语言库与工具层改进,并在 256 主机集群验证可靠扩展。
论文针对 Erlang 分布式 actor 模型虽有可靠扩展概念、却存在固有扩展极限,迫使开发者在大规模时偏离模型的问题。作者系统测量瓶颈,并在虚拟机、语言和工具三层改进:演进 Erlang VM 以适配大规模多核与 NUMA 单机;设计实现 SD Erlang 库及新语言构造语义;开发五款部署、监控与调试工具。评估基于 Orbit 与 ACO 案例,在 256 主机、6144 核集群上测量。Chaos Monkey 显示 ACO 可承受随机进程失败,保留可靠性模型;SD Erlang 通过网络分区降低流量,在超过 80 主机时提升性能,并通过分区恢复数据恢复扩展性,在该规模未触及 SD Erlang 极限。
Distributed actor languages are an effective means of constructing scalable reliable systems, and the Erlang programming language has a well-established and influential model. While the Erlang model conceptually provides reliable scalability, it has some inherent scalability limits and these force developers to depart from the model at scale. This article establishes the scalability limits of Erlang systems and reports the work of the EU RELEASE project to improve the scalability and understandability of the Erlang reliable distributed actor model. We systematically study the scalability limits of Erlang and then address the issues at the virtual machine, language, and tool levels. More specifically: (1) We have evolved the Erlang virtual machine so that it can work effectively in large-scale single-host multicore and NUMA architectures. We have made important changes and architectural improvements to the widely used Erlang/OTP release. (2) We have designed and implemented Scalable Distributed (SD) Erlang libraries to address language-level scalability issues and provided and validated a set of semantics for the new language constructs. (3) To make large Erlang systems easier to deploy, monitor, and debug, we have developed and made open source releases of five complementary tools, some specific to SD Erlang. Throughout the article we use two case studies to investigate the capabilities of our new technologies and tools: a distributed hash table based Orbit calculation and Ant Colony Optimisation (ACO). Chaos Monkey experiments show that two versions of ACO survive random process failure and hence that SD Erlang preserves the Erlang reliability model. While we report measurements on a range of NUMA and cluster architectures, the key scalability experiments are conducted on the Athos cluster with 256 hosts (6,144 cores). Even for programs with no global recovery data to maintain, SD Erlang partitions the network to reduce network traffic and hence improves performance of the Orbit and ACO benchmarks above 80 hosts. ACO measurements show that maintaining global recovery data dramatically limits scalability; however, scalability is recovered by partitioning the recovery data. We exceed the established scalability limits of distributed Erlang, and do not reach the limits of SD Erlang for these benchmarks at this scale (256 hosts, 6,144 cores).
@article{TrinderCPSTAABB17,
title = {Scaling Reliably},
author = {Phil Trinder and Natalia Chechina and Nikolaos Papaspyrou and Konstantinos Sagonas and Simon Thompson and Stephen Adams and Stavros Aronis and Robert Baker and Eva Bihari and Olivier Boudeville and Francesco Cesarini and Maurizio Di Stefano and Sverker Eriksson and Viktória fördős and Amir Ghaffari and Aggelos Giantsios and Rickard Green and Csaba Hoch and David Klaftenegger and Huiqing Li and Kenneth Lundin and Kenneth Mackenzie and Katerina Roukounaki and Yiannis Tsiouris and Kjell Winblad},
journal = {ACM Transactions on Programming Languages and Systems},
volume = {39},
number = {4},
year = {2017},
doi = {10.1145/3107937}
}