skip to main content
research-article
Open Access

Orca: GC and type system co-design for actor languages

Published:12 October 2017Publication History
Skip Abstract Section

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.

References

  1. ActorFoundry 2017. http://osl.cs.illinois.edu/software/actor-foundry/ . (Retrieved July 2017).Google ScholarGoogle Scholar
  2. Gul Agha. 1986. Actors: a Model of Concurrent Computation in Distributed Systems. MIT Press 11, 12 (1986).Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Akka 2017. Akka – Scala actor library. http://akka.io . (Retrieved July 2017).Google ScholarGoogle Scholar
  4. Joe Armstrong. 2007. A History of Erlang. In History of Programming Languages (HOPL) III. DOI: Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. 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 ScholarGoogle ScholarCross RefCross Ref
  9. Denis Caromel and Ludovic Henrio. 2004. A Theory of Distributed Objects. Springer-Verlag. DOI: Google ScholarGoogle ScholarCross RefCross Ref
  10. Elias Castegren and Tobias Wrigstad. 2016. Kappa: Reference Capabilities for Concurrent Programming. In European Conference on Object Oriented Programming (ECOOP). DOI: Google ScholarGoogle ScholarCross RefCross Ref
  11. Elias Castegren and Tobias Wrigstad. 2017. Relaxed Linear References for Lock-free Data Structures. In European Conference on Object-Oriented Programming (ECOOP), DOI: Google ScholarGoogle ScholarCross RefCross Ref
  12. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  13. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  14. Cliff Click, Gil Tene, and Michael Wolf. 2005. The Pauseless GC Algorithm. In International Conference on Virtual Execution Environments (VEE). DOI: Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. David Detlefs, Christine Flood, Steve Heller, and Tony Printezis. 2004. Garbage-first Garbage Collection. In International Symposium on Memory Management (ISMM). DOI: Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  17. 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 ScholarGoogle Scholar
  18. Roger Henriksson. 1998. Scheduling Garbage Collection in Embedded Systems. Ph.D. Dissertation. Lund University.Google ScholarGoogle Scholar
  19. 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 ScholarGoogle Scholar
  20. Aaron Hillegass. 2011. Objective-C Programming. Addison-Wesley.Google ScholarGoogle Scholar
  21. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  22. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  23. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  24. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  25. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  26. George Steed. 2016. A Principled Design of Capabilities in Pony. Master’s thesis. Imperial College London.Google ScholarGoogle Scholar
  27. SystemTap 2017. SystemTap website. (Retrieved July 2017). https://sourceware.org/systemtap/ .Google ScholarGoogle Scholar
  28. The CAF team. 2017. https://github.com/actor-framework/benchmarks/. (Retrieved July 2017). https://github.com/ actor-framework/benchmarks/Google ScholarGoogle Scholar
  29. Gil Tene, Balaji Iyengar, and Michael Wolf. 2011. C4: The Continuously Concurrent Compacting Collector. In International Symposium on Memory Management (ISMM). DOI: Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. The Computer Language Benchmarks Game 2017. The Computer Language Benchmarks Game. http://benchmarksgame. alioth.debian.org . (Retrieved July 2017).Google ScholarGoogle Scholar
  31. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  32. Wei-Jen Wang. 2013. Conservative Snapshot-Based Actor Garbage Collection for Distributed Mobile Actor Systems. Telecommunication Systems 52, 2 (2013). DOI: Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  34. 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 ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Orca: GC and type system co-design for actor languages

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in

        Full Access

        • Published in

          cover image Proceedings of the ACM on Programming Languages
          Proceedings of the ACM on Programming Languages  Volume 1, Issue OOPSLA
          October 2017
          1786 pages
          EISSN:2475-1421
          DOI:10.1145/3152284
          Issue’s Table of Contents

          Copyright © 2017 Owner/Author

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 12 October 2017
          Published in pacmpl Volume 1, Issue OOPSLA

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Author Tags

          Qualifiers

          • research-article

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader
        About Cookies On This Site

        We use cookies to ensure that we give you the best experience on our website.

        Learn more

        Got it!