Chechina, N., Li, H., Ghaffari, A., Thompson, S. and Trinder, P., 2016. Improving the Network Scalability of Erlang. Journal of Parallel and Distributed Computing, 90-91 (April), 22 - 34.
Full text available as:
|
PDF
sd-erlang-improving-jpdc-16.pdf - Accepted Version Available under License Creative Commons Attribution Non-commercial No Derivatives. 615kB | |
Copyright to original material in this document is with the original owner(s). Access to this content through BURO is granted on condition that you use it only for research, scholarly or other non-commercial purposes. If you wish to use it for any other purposes, you must contact BU via BURO@bournemouth.ac.uk. Any third party copyright material in this document remains the property of its respective owner(s). BU grants no licence for further use of that third party material. |
DOI: 10.1016/j.jpdc.2016.01.002
Abstract
As the number of cores grows in commodity architectures so does the likelihood of failures. A distributed actor model potentially facilitates the development of reliable and scalable software on these architectures. Key components include lightweight processes which ‘share nothing’ and hence can fail independently. Erlang is not only increasingly widely used, but the underlying actor model has been a beacon for programming language design, influencing for example Scala, Clojure and Cloud Haskell. While the Erlang distributed actor model is inherently scalable, we demonstrate that it is limited by some pragmatic factors. We address two network scalability issues here: globally registered process names must be updated on every node (virtual machine) in the system, and any Erlang nodes that communicate maintain an active connection. That is, there is a fully connected O(n2) network of n nodes. We present the design, implementation, and initial evaluation of a conservative extension of Erlang — Scalable Distributed (SD) Erlang. SD Erlang partitions the global namespace and connection network using s_groups. An s_group is a set of nodes with its own process namespace and with a fully connected network within the s_group, but only individual connections outside it. As a node may belong to more than one s_group it is possible to construct arbitrary connection topologies like trees or rings. We present an operational semantics for the s_group functions, and outline the validation of conformance between the implementation and the semantics using the QuickCheck automatic testing tool. Our preliminary evaluation in comparison with distributed Erlang shows that SD Erlang dramatically improves network scalability even if the number of global operations is tiny (0.01%). Moreover, even in the absence of global operations the reduced connection maintenance overheads mean that SD Erlang scales better beyond 80 nodes (1920 cores).
Item Type: | Article |
---|---|
ISSN: | 0743-7315 |
Uncontrolled Keywords: | Distributed system; Erlang; Actor model; Operational semantics; Validation; Conformance; QuickCheck; Testing |
Group: | Faculty of Science & Technology |
ID Code: | 30278 |
Deposited By: | Symplectic RT2 |
Deposited On: | 29 Jan 2018 12:35 |
Last Modified: | 14 Mar 2022 14:09 |
Downloads
Downloads per month over past year
Repository Staff Only - |