Abstract
ORCA is a concurrent and parallel garbage collector for actor programs, which does not require any STW steps, or synchronization mechanisms, and that has been designed to support zero-copy message passing and sharing of mutable data. ORCA is part of a runtime for actor-based languages, which was co-designed with the Pony programming language, and in particular, with its data race free type system. By co-designing an actor language with its runtime, it was possible to exploit certain language properties in order to optimize performance of garbage collection. Namely, ORCA relies on the guarantees of absence of race conditions in order to avoid read/write barriers, and it leverages the actor message passing, for synchronization among actors.
In this paper we briefly describe Pony and its type system. We use pseudo-code in order to introduce how ORCA allocates and deallocates objects, how it shares mutable data without requiring barriers upon data mutation, and how can immutability be used to further optimize garbage collection. Moreover, we discuss the advantages of co-designing an actor language with its runtime, and we demonstrate that ORCA can be implemented in a performant and scalable way through a set of micro-benchmarks, including a comparison with other well-known collectors.
- ActorFoundry 2017. http://osl.cs.illinois.edu/software/actor-foundry/ . (Retrieved July 2017).Google Scholar
- Gul Agha. 1986. Actors: a Model of Concurrent Computation in Distributed Systems. MIT Press 11, 12 (1986).Google Scholar
Digital Library
- Akka 2017. Akka – Scala actor library. http://akka.io . (Retrieved July 2017).Google Scholar
- Joe Armstrong. 2007. A History of Erlang. In History of Programming Languages (HOPL) III. DOI: Google Scholar
Digital Library
- Joshua S. Auerbach, David F. Bacon, Rachid Guerraoui, Jesper Honig Spring, and Jan Vitek. 2008. Flexible Task Graphs: a Unified Restricted Thread Programming Model for Java. In Conference on Languages, Compilers, and Tools for Embedded Systems (LCTES). DOI: Google Scholar
Digital Library
- David F. Bacon, Perry Cheng, and V. T. Rajan. 2003. A Real-Time Garbage Collecor with Low Overhead and Consistent Utilization. In Symposium on Principles of Programming Languages (POPL). DOI: Google Scholar
Digital Library
- Stephen M. Blackburn, Perry Cheng, and Kathryn S. McKinley. 2004. Myths and Realities: The Performance Impact of Garbage Collection. SIGMETRICS Perform. Eval. Rev. (2004). DOI: Google Scholar
Digital Library
- Stephan Brandauer, Elias Castegren, Dave Clarke, Kiko Fernandez-Reyes, Einar Broch Johnsen, Ka I. Pun, S. Lizeth Tapia Tarifa, Tobias Wrigstad, and Albert Mingkun Yang. 2015. Parallel Objects for Multicores: A Glimpse at the Parallel Language Encore. In Formal Methods for Multicore Programming. LNCS, Vol. 9104. DOI: Google Scholar
Cross Ref
- Denis Caromel and Ludovic Henrio. 2004. A Theory of Distributed Objects. Springer-Verlag. DOI: Google Scholar
Cross Ref
- Elias Castegren and Tobias Wrigstad. 2016. Kappa: Reference Capabilities for Concurrent Programming. In European Conference on Object Oriented Programming (ECOOP). DOI: Google Scholar
Cross Ref
- Elias Castegren and Tobias Wrigstad. 2017. Relaxed Linear References for Lock-free Data Structures. In European Conference on Object-Oriented Programming (ECOOP), DOI: Google Scholar
Cross Ref
- Sylvan Clebsch and Sophia Drossopoulou. 2013. Fully Concurrent Garbage Collection of Actors on Many-core Machines. In Conference on Object-Oriented Programming Languages, Applications and Systems (OOPSLA). DOI: Google Scholar
Digital Library
- Sylvan Clebsch, Sophia Drossopoulou, Sebastian Blessing, and Andy McNeil. 2015. Deny Capabilities for Safe, Fast Actors. In Workshop on Programming Based on Actors, Agents, and Decentralized Control (AGERE!). DOI: Google Scholar
Digital Library
- Cliff Click, Gil Tene, and Michael Wolf. 2005. The Pauseless GC Algorithm. In International Conference on Virtual Execution Environments (VEE). DOI: Google Scholar
Digital Library
- David Detlefs, Christine Flood, Steve Heller, and Tony Printezis. 2004. Garbage-first Garbage Collection. In International Symposium on Memory Management (ISMM). DOI: Google Scholar
Digital Library
- Tamar Domani, Gal Goldshtein, Elliot K. Kolodner, Ethan Lewis, Erez Petrank, and Dafna Sheinwald. 2002. Thread-local Heaps for Java. In International Symposium on Memory Management (ISMM). DOI: Google Scholar
Digital Library
- John Ellis, Pete Kovac, and Hans Boehm. 2017. GCBench. (Retrieved July 2017). Developed by first two authors, modified by the third, from http://www.hboehm.info/gc/gc_bench.html .Google Scholar
- Roger Henriksson. 1998. Scheduling Garbage Collection in Embedded Systems. Ph.D. Dissertation. Lund University.Google Scholar
- Carl Hewitt, Peter Bishop, and Richard Steiger. 1973. A Universal Modular ACTOR Formalism for Artificial Intelligence. In International Joint Conference on Artificial Intelligence (IJCAI). http://dl.acm.org/citation.cfm?id=1624775.1624804Google Scholar
- Aaron Hillegass. 2011. Objective-C Programming. Addison-Wesley.Google Scholar
- Shams M Imam and Vivek Sarkar. 2014. Savina – An Actor Benchmark Suite: Enabling Empirical Evaluation of Actor Libraries. In International Workshop on Programming based on Actors Agents and Decentralized Control (AGERE!). DOI: Google Scholar
Digital Library
- Filip Pizlo, Ethan Blanton, Anthony Hosking, Petr Maj, Jan Vitek, and Lukas Ziarek. 2010. SCHISM: FragmentationTolerant Real-Time Garbage Collection. In Programming Language Design and Implementation Conference (PLDI). DOI: Google Scholar
Digital Library
- Filip Pizlo, Athony L. Hosking, and Jan Vitek. 2007. Hierarchical Real-time Garbage Collection. In Conference on Languages, Compilers, and Tools for Embedded Systems (LCTES). DOI: Google Scholar
Digital Library
- Jeremy Singer, Richard E. Jones, Gavin Brown, and Mikel Luján. 2010. The Economics of Garbage Collection. In International Symposium on Memory Management (ISMM). DOI: Google Scholar
Digital Library
- Jesper Honig Spring, Filip Pizlo, Rachid Guerraoui, and Jan Vitek. 2007. Reflexes: Abstractions for Highly Responsive Systems. In International Conference on Virtual Execution Environments (VEE). DOI: Google Scholar
Digital Library
- George Steed. 2016. A Principled Design of Capabilities in Pony. Master’s thesis. Imperial College London.Google Scholar
- SystemTap 2017. SystemTap website. (Retrieved July 2017). https://sourceware.org/systemtap/ .Google Scholar
- The CAF team. 2017. https://github.com/actor-framework/benchmarks/. (Retrieved July 2017). https://github.com/ actor-framework/benchmarks/Google Scholar
- Gil Tene, Balaji Iyengar, and Michael Wolf. 2011. C4: The Continuously Concurrent Compacting Collector. In International Symposium on Memory Management (ISMM). DOI: Google Scholar
Digital Library
- The Computer Language Benchmarks Game 2017. The Computer Language Benchmarks Game. http://benchmarksgame. alioth.debian.org . (Retrieved July 2017).Google Scholar
- Abhay Vardhan and Gul Agha. 2002. Using passive object garbage collection algorithms for garbage collection of active objects. In International Symposium on Memory Management (ISMM). DOI: Google Scholar
Digital Library
- Wei-Jen Wang. 2013. Conservative Snapshot-Based Actor Garbage Collection for Distributed Mobile Actor Systems. Telecommunication Systems 52, 2 (2013). DOI: Google Scholar
Digital Library
- Tobias Wrigstad, Filip Pizlo, Fadi Meawad, Lei Zhao, and Jan Vitek. 2009. Loci: Simple Thread-Locality for Java. In European Conference on Object-Oriented Programming (ECOOP). DOI: Google Scholar
Digital Library
- Albert Mingkun Yang and Tobias Wrigstad. 2017. Type-assisted Automatic Garbage Collection for Lock-free Data Structures. In International Symposium on Memory Management (ISMM). DOI: Google Scholar
Digital Library
Index Terms
Orca: GC and type system co-design for actor languages
Recommendations
Benchmarking communication in actor- and agent-based languages
EMAS'13: Proceedings of the First International Conference on Engineering Multi-Agent SystemsThis paper presents the results of communication benchmarks comparing an agent-oriented programming language and two actor-oriented programming languages. It is based on an existing benchmark for programming languages and two variations on that ...
GC assertions: using the garbage collector to check heap properties
PLDI '09: Proceedings of the 30th ACM SIGPLAN Conference on Programming Language Design and ImplementationThis paper introduces GC assertions, a system interface that programmers can use to check for errors, such as data structure invariant violations, and to diagnose performance problems, such as memory leaks. GC assertions are checked by the garbage ...
The pauseless GC algorithm
VEE '05: Proceedings of the 1st ACM/USENIX international conference on Virtual execution environmentsModern transactional response-time sensitive applications have run into practical limits on the size of garbage collected heaps. The heap can only grow until GC pauses exceed the response-time limits. Sustainable, scalable concurrent collection has ...






Comments