Open Systems Laboratory at Illinois

Concurrent garbage collection in the actor model

By Dan Plyukhin and Gul Agha. In Proceedings of the 8th ACM SIGPLAN International Workshop on Programming Based on Actors, Agents, and Decentralized Control, AGERE 2018, 44–53. New York, NY, USA, 2018. ACM.

DOI:
10.1145/3281366.3281368
Publisher Link:
http://doi.acm.org/10.1145/3281366.3281368

Abstract

In programming languages where memory may be allocated dynamically, automatic garbage collection (GC) can improve the efficiency of program execution while preventing program errors caused by incorrectly removed memory locations. In actor systems, GC poses some challenges that make it much costlier than in the sequential setting: Besides references from reachable actors, we have to consider inverse references from potentially active actors to reachable actors. One proposal, adopted in the runtime for the actor programming language Pony, uses causal message delivery and a centralized detection algorithm. While this is efficient in a multicore setting, the solution is too expensive for a distributed actor runtime. In this work, we show how the causal order message delivery requirement may be removed. Specifically, we describe a tracing collector of distributed actor garbage with centralized and decentralized variants. Both are guaranteed not to collect any non-garbage actors (safety) and to eventually collect all garbage actors (liveness).

BibTeX

@inproceedings{conf/AGERE/Plyukhin2018,
    author = "Plyukhin, Dan and Agha, Gul",
    title = "Concurrent Garbage Collection in the Actor Model",
    acmid = "3281368",
    address = "New York, NY, USA",
    booktitle = "Proceedings of the 8th ACM SIGPLAN International
                 Workshop on Programming Based on Actors, Agents, and
                 Decentralized Control",
    doi = "10.1145/3281366.3281368",
    isbn = "978-1-4503-6066-1",
    keywords = "distributed systems, garbage collection",
    location = "Boston, MA, USA",
    numpages = "10",
    pages = "44--53",
    publisher = "ACM",
    series = "AGERE 2018",
    url = "http://doi.acm.org/10.1145/3281366.3281368",
    year = "2018",
}