Abstract
We propose a scalable, cycle-collecting, decentralized, reference counting garbage collector with partial tracing. The algorithm is based on the Brownbridge system but uses four different types of references to label edges. Memory usage is O (log n) bits per node, where n is the number of nodes in the graph. The algorithm assumes an asynchronous network model with a reliable reordering channel. It collects garbage in O (E a ) time, where E a is the number of edges in the in- duced subgraph. The algorithm uses termination detection to manage the distributed computation, a unique identifier to break the symmetry among multiple collectors, and a transaction-based approach when multiple collectors conflict. Unlike existing algorithms, ours is not centralized, does not require barriers, does not require migration of nodes, does not require back-pointers on every edge, and is stable against concurrent mutation.
- Saleh E. Abdullahi and Graem A. Ringwood. Garbage collecting the internet: A survey of distributed garbage collection. ACM Comput. Surv., 30(3):330–373, September 1998. Google Scholar
Digital Library
- Stephen M. Blackburn, Richard L. Hudson, Ron Morrison, J. Eliot B. Moss, David S. Munro, and John Zigman. Starting with termination: A methodology for building distributed garbage collection algorithms. Aust. Comput. Sci. Commun., 23(1):20–28, January 2001. Google Scholar
Digital Library
- Steven R. Brandt, Hari Krishnan, Gokarna Sharma, and Costas Busch. Concurrent, parallel garbage collection in linear time. In Proceedings of the 13th International Symposium on Memory Management . ACM, 2014. Google Scholar
Digital Library
- D.R. Brownbridge. Cyclic reference counting for combinator machines. In Jean-Pierre Jouannaud, editor, Functional Programming Languages and Computer Architecture, volume 201 of Lecture Notes in Computer Science, pages 273–288. 1985. Procedure action(sender): if cd = NULLthen return toggle() if old weight < weightthen PhantomizeAll(sender) else if is initiator()then action initiator(sender) else if cd.recv = HEALTHYthen if cd.phantom count = 0 and cd.rcc = 0 and cd.wait count = 0then return to sender(sender) cd = NULL else if cd.recv = PHANTOMthen if not phantom flag() and (old weight < weight or strong count = 0)then PhantomizeAll(sender) else if cd.incrRCC and phantom flag()then ClaimAll() else return to parent() else if cd.recv = RECOVERthen if cd.state, RECOVERthen if strong count > 0then BuildAll(sender) else if phantom flag()then RecoverAll() else PhantomizeAll(sender) else if strong count > 0then BuildAll(sender) else if weak count > 0then PhantomizeAll(sender) else return to parent() else if cd.recv = BUILDthen if phantom flag()then BuildAll(sender) else return to parent() if cd.phantom count = 0then return to sender(sender) cd = NULL else if cd.recv = INFECTEDthen if cd.state, INFECTEDthen if phantom flag()then InfectAll() if ready() and strong count = 0 and weak count = 0 and cd.phantom count = 0then cd.state = DEAD Procedure Phantom Flag(): if cd = NULLthen return FALSE else return cd.state = PHANTOM or RECOVER or INFECTED Google Scholar
Digital Library
- Rodrigo Bruno and Paulo Ferreira. A study on garbage collection algorithms for big data environments. ACM Comput. Surv., 51(1):20:1– 20:35, January 2018. Google Scholar
Digital Library
- Sylvan Clebsch and Sophia Drossopoulou. Fully concurrent garbage collection of actors on many-core machines. SIGPLAN Not., 48(10):553– 570, October 2013. Google Scholar
Digital Library
- Sukumar Ghosh. Distributed systems: an algorithmic approach. CRC press, 2014. Google Scholar
Digital Library
- Ionel Gog, Jana Giceva, Malte Schwarzkopf, Kapil Vaswani, Dimitrios Vytiniotis, Ganesan Ramalingam, Manuel Costa, Derek G Murray, Steven Hand, and Michael Isard. Broom: Sweeping out garbage collection from big data systems. In 15th Workshop on Hot Topics in Operating Systems (HotOS XV), 2015. Google Scholar
Digital Library
- Paul Hudak and Robert M. Keller. Garbage collection and task deletion in distributed applicative processing systems. In Proceedings of the 1982 ACM Symposium on LISP and Functional Programming, LFP ’82, pages 168–178, New York, NY, USA, 1982. ACM. Google Scholar
Digital Library
- Richard Jones, Antony Hosking, and Eliot Moss. The garbage collection handbook: the art of automatic memory management . Chapman and Hall/CRC, 2016. Google Scholar
Digital Library
- Hartmut Kaiser, Maciek Brodowicz, and Thomas Sterling. Parallex an advanced parallel execution model for scaling-impaired applications. In Parallel Processing Workshops, 2009. ICPPW’09. International Conference on, pages 394–401. IEEE, 2009. Google Scholar
Digital Library
- Laxmikant V Kale and Sanjeev Krishnan. Charm++: Parallel programming with message-driven objects. Parallel programming using C+, pages 175–213, 1996.Google Scholar
- R. Ladin and B. Liskov. Garbage collection of a distributed heap. In Distributed Computing Systems, 1992., Proceedings of the 12th International Conference on, pages 708–715, Jun 1992.Google Scholar
Cross Ref
- Fabrice Le Fessant, Ian Piumarta, and Marc Shapiro. An implementation of complete, asynchronous, distributed garbage collection. In Proceedings of the ACM SIGPLAN 1998 Conference on Programming Language Design and Implementation, PLDI ’98, pages 152–161, New York, NY, USA, 1998. ACM. Google Scholar
Digital Library
- Martin Maas, Tim Harris, Krste Asanović, and John Kubiatowicz. Trash day: Coordinating garbage collection in distributed systems. In 15th Workshop on Hot Topics in Operating Systems (HotOS XV), 2015. Google Scholar
Digital Library
- Umesh Maheshwari and Barbara Liskov. Collecting cyclic distributed garbage by controlled migration. Distributed Computing, 10(2):79–86, 1997.Google Scholar
Cross Ref
- Umesh Maheshwari and Barbara Liskov. Collecting distributed garbage cycles by back tracing. In Proceedings of the Sixteenth Annual ACM Symposium on Principles of Distributed Computing, PODC ’97, pages 239–248, New York, NY, USA, 1997. ACM. Google Scholar
Digital Library
- John McCorquodale, JD de St Germain, S Parker, and CR Johnson. The uintah parallelism infrastructure: A performance evaluation on the sgi origin 2000. High Performance Computing 2001, 2001.Google Scholar
- David Peleg. Distributed Computing: A Locality-sensitive Approach. Society for Industrial and Applied Mathematics, Philadelphia, PA, USA, 2000. Google Scholar
Digital Library
- E.J.H. Pepels, M.J. Plasmeijer, C.J.D. van Eekelen, and M.C.J.D. Eekelen. A Cyclic Reference Counting Algorithm and Its Proof . Internal report 88-10. Department of Informatics, Faculty of Science, University of Nijmegen, 1988.Google Scholar
- David Plainfossé and Marc Shapiro. A survey of distributed garbage collection techniques. In Proceedings of the International Workshop on Memory Management, IWMM ’95, pages 211–249, London, UK, UK, 1995. Springer-Verlag. Google Scholar
Digital Library
- N. Richer and M. Shapiro. The memory behavior of www, or the www considered as a persistent store. In POS, pages 161–176, 2000. Google Scholar
Digital Library
- J.D. Salkild. Implementation and analysis of two reference counting algorithms. Master thesis, University College, London, 1987.Google Scholar
- Gerard Tel and Friedemann Mattern. The derivation of distributed termination detection algorithms from garbage collection schemes. ACM Trans. Program. Lang. Syst., 15(1):1–35, January 1993. Google Scholar
Digital Library
- L. Veiga and P. Ferreira. Asynchronous complete distributed garbage collection. In Parallel and Distributed Processing Symposium, 2005. Proceedings. 19th IEEE International, pages 24a–24a, April 2005. Google Scholar
Digital Library
Index Terms
Distributed garbage collection for general graphs
Recommendations
Distributed garbage collection for general graphs
ISMM 2018: Proceedings of the 2018 ACM SIGPLAN International Symposium on Memory ManagementWe propose a scalable, cycle-collecting, decentralized, reference counting garbage collector with partial tracing. The algorithm is based on the Brownbridge system but uses four different types of references to label edges. Memory usage is O (log n) ...
Age-based garbage collection
Modern generational garbage collectors look for garbage among the young objects, because they have high mortality; however, these objects include the very youngest objects, which clearly are still live. We introduce new garbage collection algorithms, ...







Comments