Scaling Reliably: Improving the Scalability of the Erlang Distributed Actor Platform
Authors:
Phil Trinder,
Natalia Chechina,
Nikolaos Papaspyrou,
Konstantinos Sagonas,
Simon Thompson,
Stephen Adams,
Stavros Aronis,
Robert Baker,
Eva Bihari,
Olivier Boudeville,
Francesco Cesarini,
Maurizio Di Stefano,
Sverker Eriksson,
Viktoria Fordos,
Amir Ghaffari,
Aggelos Giantsios,
Rickard Green,
Csaba Hoch,
David Klaftenegger,
Huiqing Li,
Kenneth Lundin,
Kenneth Mackenzie,
Katerina Roukounaki,
Yiannis Tsiouris,
Kjell Winblad
Abstract:
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 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 s…
▽ More
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 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 to improve the language scalability.
We systematically study the scalability limits of Erlang and address the issues at the virtual machine (VM), language, and tool levels. More specifically: (1) We have evolved the Erlang VM so that it can work effectively in large scale single-host multicore and NUMA architectures. We have made important architectural improvements to the Erlang/OTP. (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. 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.
△ Less
Submitted 8 May, 2017; v1 submitted 24 April, 2017;
originally announced April 2017.
A Type System for Unstructured Locking that Guarantees Deadlock Freedom without Imposing a Lock Ordering
Authors:
Prodromos Gerakios,
Nikolaos Papaspyrou,
Konstantinos Sagonas
Abstract:
Deadlocks occur in concurrent programs as a consequence of cyclic resource acquisition between threads. In this paper we present a novel type system that guarantees deadlock freedom for a language with references, unstructured locking primitives, and locks which are implicitly associated with references. The proposed type system does not impose a strict lock acquisition order and thus increases p…
▽ More
Deadlocks occur in concurrent programs as a consequence of cyclic resource acquisition between threads. In this paper we present a novel type system that guarantees deadlock freedom for a language with references, unstructured locking primitives, and locks which are implicitly associated with references. The proposed type system does not impose a strict lock acquisition order and thus increases programming language expressiveness.
△ Less
Submitted 18 October, 2011;
originally announced October 2011.
A Concurrent Language with a Uniform Treatment of Regions and Locks
Authors:
Prodromos Gerakios,
Nikolaos Papaspyrou,
Konstantinos Sagonas
Abstract:
A challenge for programming language research is to design and implement multi-threaded low-level languages providing static guarantees for memory safety and freedom from data races. Towards this goal, we present a concurrent language employing safe region-based memory management and hierarchical locking of regions. Both regions and locks are treated uniformly, and the language supports ownershi…
▽ More
A challenge for programming language research is to design and implement multi-threaded low-level languages providing static guarantees for memory safety and freedom from data races. Towards this goal, we present a concurrent language employing safe region-based memory management and hierarchical locking of regions. Both regions and locks are treated uniformly, and the language supports ownership transfer, early deallocation of regions and early release of locks in a safe manner.
△ Less
Submitted 4 February, 2010;
originally announced February 2010.