Scaling Reliably: Improving the Scalability of the Erlang Distributed Actor Platform

Thompson, Simon and Li, Huiqing and Baker, Robert and Adams, Stephen and Trinder, Phil and Chechina, Natalia and Papaspyrou, Nikolaos and Sagonas, Konstantinos and Aronis, Stavros and Bihari, Eva and Boudeville, Olivier and Cesarini, Francesco and de Stefano, Maurizio and Eriksson, Sverker and Fordos, Viktoria and Ghaffari, Amir and Green, Rickard and Hoch, csaba and Klaftenegger, David and Lundin, Kenneth and MacKenzie, Kenneth and Roukounaki, Katerinia and Tsiouris, Yiannis and Winblad, Kjell (2017) Scaling Reliably: Improving the Scalability of the Erlang Distributed Actor Platform. ACM Transactions on Programming Languages and Systems, 39 (4). ISSN 0164-0925. E-ISSN 1558-4593. (doi: (Full text available)

PDF - Author's Accepted Manuscript
Download (1MB) Preview
Official URL


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).

Item Type: Article
Uncontrolled keywords: Distributed programming languages, Functional languages, Runtime environments, Concurrent programming structures, Erlang, scalability, reliability
Subjects: Q Science > QA Mathematics (inc Computing science) > QA 76 Software, computer programming,
Q Science > QA Mathematics (inc Computing science) > QA 76 Software, computer programming, > QA76.76 Computer software
Divisions: Faculties > Sciences > School of Computing
Faculties > Sciences > School of Computing > Programming Languages and Systems Group
Depositing User: Simon Thompson
Date Deposited: 01 Sep 2017 18:56 UTC
Last Modified: 04 Sep 2017 14:55 UTC
Resource URI: (The current URI for this page, for reference purposes)
Thompson, Simon:
  • Depositors only (login required):


Downloads per month over past year