{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,9]],"date-time":"2025-10-09T20:49:23Z","timestamp":1760042963500,"version":"3.41.0"},"reference-count":77,"publisher":"Association for Computing Machinery (ACM)","issue":"4","license":[{"start":{"date-parts":[[2017,8,17]],"date-time":"2017-08-17T00:00:00Z","timestamp":1502928000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/501100000266","name":"UK\u2019s Engineering and Physical Sciences Research Council","doi-asserted-by":"crossref","award":["EP\/G055181\/1"],"award-info":[{"award-number":["EP\/G055181\/1"]}],"id":[{"id":"10.13039\/501100000266","id-type":"DOI","asserted-by":"crossref"}]},{"name":"HPC-GAP: High Performance Computational Algebra and Discrete Mathematics"},{"DOI":"10.13039\/501100000780","name":"European Union","doi-asserted-by":"crossref","award":["RII3-CT-2005-026133"],"award-info":[{"award-number":["RII3-CT-2005-026133"]}],"id":[{"id":"10.13039\/501100000780","id-type":"DOI","asserted-by":"crossref"}]},{"name":"SCIEnce: Symbolic Computing Infrastructure in Europe","award":["IST-2011-287510"],"award-info":[{"award-number":["IST-2011-287510"]}]},{"name":"RELEASE: A High-Level Paradigm for Reliable Large-scale Server Software"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Program. Lang. Syst."],"published-print":{"date-parts":[[2017,12,31]]},"abstract":"<jats:p>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.<\/jats:p>\n          <jats:p>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.<\/jats:p>\n          <jats:p>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).<\/jats:p>","DOI":"10.1145\/3107937","type":"journal-article","created":{"date-parts":[[2017,8,24]],"date-time":"2017-08-24T11:49:04Z","timestamp":1503575344000},"page":"1-46","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":8,"title":["Scaling Reliably"],"prefix":"10.1145","volume":"39","author":[{"ORCID":"https:\/\/orcid.org\/0000-0003-0190-7010","authenticated-orcid":false,"given":"Phil","family":"Trinder","sequence":"first","affiliation":[{"name":"University of Glasgow, Glasgow, Scotland"}]},{"given":"Natalia","family":"Chechina","sequence":"additional","affiliation":[{"name":"University of Glasgow, Glasgow, Scotland"}]},{"given":"Nikolaos","family":"Papaspyrou","sequence":"additional","affiliation":[{"name":"National Technical University of Athens, Athens, Greece"}]},{"given":"Konstantinos","family":"Sagonas","sequence":"additional","affiliation":[{"name":"Uppsala University and National Technical University of Athens, Uppsala, Sweden"}]},{"given":"Simon","family":"Thompson","sequence":"additional","affiliation":[{"name":"University of Kent, Canterbury, UK"}]},{"given":"Stephen","family":"Adams","sequence":"additional","affiliation":[{"name":"University of Kent, Canterbury, UK"}]},{"given":"Stavros","family":"Aronis","sequence":"additional","affiliation":[{"name":"Uppsala University, Uppsala, Sweden"}]},{"given":"Robert","family":"Baker","sequence":"additional","affiliation":[{"name":"University of Kent, Canterbury, UK"}]},{"given":"Eva","family":"Bihari","sequence":"additional","affiliation":[{"name":"Erlang Solutions, London, UK"}]},{"given":"Olivier","family":"Boudeville","sequence":"additional","affiliation":[{"name":"\u00c9lectricit\u00e9 de France"}]},{"given":"Francesco","family":"Cesarini","sequence":"additional","affiliation":[{"name":"Erlang Solutions, London, UK"}]},{"given":"Maurizio Di","family":"Stefano","sequence":"additional","affiliation":[{"name":"University of Kent, Canterbury, UK"}]},{"given":"Sverker","family":"Eriksson","sequence":"additional","affiliation":[{"name":"Ericsson AB, Kista, Sweden"}]},{"given":"Vikt\u00f3ria","family":"f\u00f6rd\u0151s","sequence":"additional","affiliation":[{"name":"Erlang Solutions, London, UK"}]},{"given":"Amir","family":"Ghaffari","sequence":"additional","affiliation":[{"name":"University of Glasgow, Glasgow, Scotland"}]},{"given":"Aggelos","family":"Giantsios","sequence":"additional","affiliation":[{"name":"National Technical University of Athens, Athens, Greece"}]},{"given":"Rickard","family":"Green","sequence":"additional","affiliation":[{"name":"Ericsson AB, Kista, Sweden"}]},{"given":"Csaba","family":"Hoch","sequence":"additional","affiliation":[{"name":"Erlang Solutions, London, UK"}]},{"given":"David","family":"Klaftenegger","sequence":"additional","affiliation":[{"name":"Uppsala University, Uppsala, Sweden"}]},{"given":"Huiqing","family":"Li","sequence":"additional","affiliation":[{"name":"University of Kent, Canterbury, UK"}]},{"given":"Kenneth","family":"Lundin","sequence":"additional","affiliation":[{"name":"Ericsson AB, Kista, Sweden"}]},{"given":"Kenneth","family":"Mackenzie","sequence":"additional","affiliation":[{"name":"University of Glasgow, Glasgow, Scotland"}]},{"given":"Katerina","family":"Roukounaki","sequence":"additional","affiliation":[{"name":"National Technical University of Athens, Athens, Greece"}]},{"given":"Yiannis","family":"Tsiouris","sequence":"additional","affiliation":[{"name":"National Technical University of Athens, Athens, Greece"}]},{"given":"Kjell","family":"Winblad","sequence":"additional","affiliation":[{"name":"Uppsala University, Uppsala, Sweden"}]}],"member":"320","published-online":{"date-parts":[[2017,8,17]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","unstructured":"Gul Agha. 1985. ACTORS: A Model of Concurrent Computation in Distributed Systems. Ph.D. Dissertation. MIT.","DOI":"10.5555\/912083"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/323648.323743"},{"key":"e_1_2_1_3_1","unstructured":"AMD 2015. Bulldozer (microarchitecture) Retrieved from https:\/\/en.wikipedia.org\/wiki\/Bulldozer_(microarchitecture)."},{"key":"e_1_2_1_4_1","unstructured":"Apache SF. 2016. Liblcoud. Retrieved from https:\/\/libcloud.apache.org\/."},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1109\/SFCS.1989.63531"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.5555\/1403889"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/1810891.1810910"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/2364489.2364495"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/1159789.1159792"},{"volume-title":"Visual Languages and Computing (VLC): Proceedings of the 19th International Conference on Distributed Multimedia Systems (DMS\u201913).","author":"Baker Robert","key":"e_1_2_1_10_1","unstructured":"Robert Baker, Peter Rodgers, Simon Thompson, and Huiqing Li. 2013. Multi-level visualization of concurrent and distributed computation in erlang. In Visual Languages and Computing (VLC): Proceedings of the 19th International Conference on Distributed Multimedia Systems (DMS\u201913)."},{"key":"e_1_2_1_11_1","volume-title":"The Datacenter as a Computer","author":"Barroso Luiz Andr\u00e9","unstructured":"Luiz Andr\u00e9 Barroso, Jimmy Clidaras, and Urs H\u00f6lzle. 2013. The Datacenter as a Computer (2nd ed.). Morgan and Claypool.","edition":"2"},{"key":"e_1_2_1_12_1","unstructured":"Basho Technologies. 2014. Riakdocs. Basho Bench. Retrieved from http:\/\/docs.basho.com\/riak\/latest\/ops\/building\/benchmarking\/."},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1057\/jors.1990.166"},{"key":"e_1_2_1_14_1","volume-title":"Chaos Monkey Released into the Wild. Netflix Blog","author":"Bennett Cory","year":"2012","unstructured":"Cory Bennett and Ariel Tseitlin. 2012. Chaos Monkey Released into the Wild. Netflix Blog (2012)."},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/209936.209958"},{"key":"e_1_2_1_16_1","volume-title":"Technical manual of the sim-diasca simulation engine. EDF R&D","author":"Boudeville Olivier","year":"2012","unstructured":"Olivier Boudeville. 2012. Technical manual of the sim-diasca simulation engine. EDF R&D (2012)."},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-14675-1_7"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/2442516.2442532"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.5555\/1717841"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.5555\/355074"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jpdc.2016.01.002"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1109\/TPDS.2017.2654246"},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/2975969.2975973"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/351240.351266"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1287\/ijoc.10.3.341"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/1327452.1327492"},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.1007\/11846802_24"},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.5555\/2851099"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.5555\/975277"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/1281100.1281106"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/2034675.2034690"},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.5555\/311424"},{"volume-title":"Fault-Tolerance Techniques for High-Performance Computing","author":"Gainaru Ana","key":"e_1_2_1_33_1","unstructured":"Ana Gainaru and Franck Cappello. 2015. Errors and faults. In Fault-Tolerance Techniques for High-Performance Computing. Springer International Publishing, 89--144."},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/1159789.1159795"},{"key":"e_1_2_1_36_1","volume-title":"A Benchmark Tool for Distributed Erlang","author":"Ghaffari Amir","year":"2014","unstructured":"Amir Ghaffari. 2014a. DE-Bench, A Benchmark Tool for Distributed Erlang (2014). Retrieved from https:\/\/github.com\/amirghaffari\/DEbench."},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/2633448.2633449"},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/2505305.2505315"},{"key":"e_1_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/564585.564601"},{"key":"e_1_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.1145\/242857.242867"},{"key":"e_1_2_1_41_1","volume-title":"Actor model for discretionary, adaptive concurrency. CoRR abs\/1008.1459","author":"Hewitt Carl","year":"2010","unstructured":"Carl Hewitt. 2010. Actor model for discretionary, adaptive concurrency. CoRR abs\/1008.1459 (2010)."},{"key":"e_1_2_1_42_1","doi-asserted-by":"publisher","DOI":"10.5555\/1624775.1624804"},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/1408681.1408682"},{"key":"e_1_2_1_44_1","volume-title":"Proceedings of the Workshop on Advanced Software Development Tools and Techniques (WASDETT\u201908)","author":"Horv\u00e1th Zolt\u00e1n","year":"2008","unstructured":"Zolt\u00e1n Horv\u00e1th, L\u00e1szl\u00f3 L\u00f6vei, Tam\u00e1s Kozsik, R\u00f3bert Kitlei, Anik\u00f3 Nagyn\u00e9 V\u00edg, Tam\u00e1s Nagy, Melinda T\u00f3th, and Roland Kir\u00e1ly. 2008. Building a refactoring tool for Erlang. In Proceedings of the Workshop on Advanced Software Development Tools and Techniques (WASDETT\u201908)."},{"key":"e_1_2_1_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/167962.165874"},{"key":"e_1_2_1_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/2505305.2505308"},{"key":"e_1_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-09873-9_48"},{"key":"e_1_2_1_48_1","volume-title":"Queue delegation locking","author":"Klaftenegger David","year":"2017","unstructured":"David Klaftenegger, Konstantinos Sagonas, and Kjell Winblad. 2017. Queue delegation locking. IEEE Trans. Parallel Distrib. Syst. (2017). To appear."},{"key":"e_1_2_1_49_1","doi-asserted-by":"publisher","DOI":"10.1145\/1900160.1900176"},{"key":"e_1_2_1_50_1","doi-asserted-by":"publisher","DOI":"10.1145\/1773912.1773922"},{"key":"e_1_2_1_51_1","unstructured":"J. Lee et al. 2010. Python Actor Runtime Library. Retrieved from osl.cs.uiui.edu\/parley\/."},{"key":"e_1_2_1_52_1","doi-asserted-by":"publisher","DOI":"10.1145\/2351676.2351727"},{"key":"e_1_2_1_53_1","doi-asserted-by":"publisher","DOI":"10.1145\/2505305.2505311"},{"key":"e_1_2_1_54_1","doi-asserted-by":"publisher","DOI":"10.1145\/2593501.2593509"},{"key":"e_1_2_1_55_1","doi-asserted-by":"publisher","DOI":"10.1145\/2678015.2682533"},{"key":"e_1_2_1_56_1","doi-asserted-by":"publisher","DOI":"10.1145\/1411273.1411283"},{"key":"e_1_2_1_57_1","doi-asserted-by":"publisher","DOI":"10.1080\/10586458.2001.10504443"},{"key":"e_1_2_1_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/2975969.2975971"},{"volume-title":"The high-resolution timer API. (Jan","year":"2006","key":"e_1_2_1_59_1","unstructured":"LWN.net. 2006. The high-resolution timer API. (Jan. 2006). Retrieved from https:\/\/lwn.net\/Articles\/167897\/"},{"key":"e_1_2_1_60_1","doi-asserted-by":"publisher","DOI":"10.1145\/2804295.2804299"},{"key":"e_1_2_1_61_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0164-1212(98)10034-1"},{"key":"e_1_2_1_62_1","doi-asserted-by":"publisher","DOI":"10.1145\/2692956.2663188"},{"key":"e_1_2_1_63_1","doi-asserted-by":"publisher","DOI":"10.1287\/mnsc.6.1.1"},{"key":"e_1_2_1_64_1","unstructured":"Martin Odersky et al. 2012. The Scala Programming Language. (2012). Retrieved from www.scala-lang.org."},{"key":"e_1_2_1_66_1","doi-asserted-by":"publisher","DOI":"10.1145\/2364489.2364493"},{"key":"e_1_2_1_67_1","unstructured":"RELEASE Project Team. 2015. EU Framework 7 Project 287510 (2011--2015). Retrieved from http:\/\/www.release-project.eu."},{"key":"e_1_2_1_68_1","doi-asserted-by":"publisher","DOI":"10.1145\/1599410.1599414"},{"key":"e_1_2_1_69_1","doi-asserted-by":"publisher","DOI":"10.1145\/2633448.2633455"},{"key":"e_1_2_1_70_1","doi-asserted-by":"publisher","DOI":"10.1109\/ISPDC.2015.32"},{"key":"e_1_2_1_71_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-29778-1_3"},{"key":"e_1_2_1_72_1","doi-asserted-by":"publisher","DOI":"10.5555\/546703"},{"key":"e_1_2_1_73_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-70592-5_6"},{"key":"e_1_2_1_74_1","doi-asserted-by":"publisher","unstructured":"Don Syme Adam Granicz and Antonio Cisternino. 2015. Expert F# 4.0. Springer.","DOI":"10.5555\/2888485"},{"key":"e_1_2_1_75_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796813000117"},{"key":"e_1_2_1_76_1","unstructured":"Marcus V\u00f6lker. 2014. Linux Timers. Retrieved from https:\/\/upvoid.com\/devblog\/2014\/05\/linux-timers\/."},{"key":"e_1_2_1_77_1","unstructured":"WhatsApp. 2015. Homepage. Retrieved from https:\/\/www.whatsapp.com\/."},{"key":"e_1_2_1_78_1","volume-title":"Hadoop\u2014The Definitive Guide: Storage and Analysis at Internet Scale","author":"White Tom","unstructured":"Tom White. 2012. Hadoop\u2014The Definitive Guide: Storage and Analysis at Internet Scale (3rd ed., revised and updated). O\u2019Reilly. I--XXIII, 1--657 pages.","edition":"3"},{"key":"e_1_2_1_79_1","volume-title":"Proceedings of the Conference on Implementing Functional Languages (IFL\u201900)","author":"Wiger Ulf","year":"2000","unstructured":"Ulf Wiger. 2000. Industrial-strength functional programming: Experiences with the ericsson AXD301 project. In Proceedings of the Conference on Implementing Functional Languages (IFL\u201900). Springer-Verlag, Aachen, Germany."}],"container-title":["ACM Transactions on Programming Languages and Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3107937","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3107937","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T03:30:25Z","timestamp":1750217425000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3107937"}},"subtitle":["Improving the Scalability of the Erlang Distributed Actor Platform"],"short-title":[],"issued":{"date-parts":[[2017,8,17]]},"references-count":77,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2017,12,31]]}},"alternative-id":["10.1145\/3107937"],"URL":"https:\/\/doi.org\/10.1145\/3107937","relation":{},"ISSN":["0164-0925","1558-4593"],"issn-type":[{"type":"print","value":"0164-0925"},{"type":"electronic","value":"1558-4593"}],"subject":[],"published":{"date-parts":[[2017,8,17]]},"assertion":[{"value":"2015-12-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2017-06-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2017-08-17","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}