Garbage Collection of Persistent Objects in Distributed Shared Memory
This paper describes a garbage collection algorithm for distributed persistent objects in a loosely coupled network of workstations. Objects are accessed via a weakly consistent shared distributed virtual memory with recoverable properties. We address the specific problem of garbage collecting a large amount of distributed persistent objects, cached on several nodes for efficient sharing.
For clustering purposes, objects are allocated within segments, and segments are logically grouped into bunches. The garbage collection subsystem combines three sub-algorithms: the bunch garbage collector that cleans one bunch (possibly multiply-cached) independently of any other, the scion cleaner that propagates accessibility information across bunches, and the group garbage collector aimed at reclaiming inter-bunch cycles of dead objects.
These three sub-algorithms are highly independent. Thus, the garbage collection subsystem has a high degree of scalability and parallelism. On top of this, it reclaims cycles of garbage, it does not require any particular communication support such as causality or atomicity, and is well suited to large scale networks.
KeywordsGarbage Collection Address Space Shared Object Virtual Memory Garbage Collector
Unable to display preview. Download preview PDF.
- Andrew W. Appel, John R. Ellis, and Kai Li. Real-time concurrent collection on stock multiprocessors. In SIGPLAN’88 — Conference on Programming Language Design and Implementation, pages 11–20, Atlanta (USA), June 1988.Google Scholar
- Brian N. Bershad and Matthew J. Zekauskas. The Midway distributed shared memory system. In Proceedings of the COMPCON’93 Conference, pages 528–537, February 1993.Google Scholar
- D. I. Bevan. Distributed garbage collection using reference counting. In PARLE’87—Parallel Architectures and Languages Europe, number 259 in Lecture Notes in Computer Science, pages 117–187, Eindhoven (the Netherlands), June 1987. Springer-Verlag.Google Scholar
- Hans-J. Boehm, Alan J. Demers, and Scott Shenker. Mostly parallel garbage collection. In Proc. of the SIGPLAN’91 Conf. on Programming Language Design and Implementation, pages 157–164, Toronto (Canada), June 1991. ACM.Google Scholar
- Paulo Ferreira and Marc Shapiro. Distribution and persistence in multiple and heterogeneous address spaces. In Proc. of the International Workshop on Object Orientation in Operating Systems, Ashville, North Carolina, (USA), December 1993. IEEE Comp. Society Press.Google Scholar
- Paulo Ferreira and Marc Shapiro. Garbage collection and DSM consistency. In Proc. of the First Symposium on Operating Systems Design and Implementation (OSDI), Monterey, California (USA), November 1994. ACM.Google Scholar
- Antony L. Hosking, J. Eliot B. Moss, and Darko Stefanoviè. A comparative performance evaluation of write barrier implementations. In Conf. on Object-Oriented Programming Systems, Languages, and Applications, volume 27 of SIGPLAN Notices, pages 92–109, Vancouver (Canada), October 1992. ACM Press.Google Scholar
- Niels C. Juul. Comprehensive, Concurrent, and Robust Garbage Collection in the Distributed, Object-Based System Emerald. PhD thesis, Dept. of Computer Science, Univ. of Copenhagen, Denmark, February 1993.Google Scholar
- Bett Koch, Tracy Schunke, Alan Dearie, Francis Vaughan, Chris Marlin, Ruth Fazakerley, and Chris Barter. Cache coherency and storage management in a persistent object system. In Proceedings of the Fourth International Workshop on Persistent Object Systems, pages 99–109, Martha’s Vineyard, MA (USA), September 1990.Google Scholar
- R. Kordale, M. Ahamad, and J. Shilling. Distributed/concurrent garbage collection in distributed shared memory systems. In Proc. of the International Workshop on Object Orientation and Operating Systems, Ashville, North Carolina (USA), December 1993. IEEE Comp. Society Press.Google Scholar
- David Kotz and Preston Crow. The expected lifetime of single-address-space operating systems. In Proceedings of SIGMETRICS’94, Nashville, Tennessee, (USA), May 1994. ACM Press.Google Scholar
- Bernard Lang, Christian Queinnec, and José Piquer. Garbage collecting the world. In Proc. of the 19th Annual ACM SIGPLAN-SIGACT Symp. on Principles of Programming Lang., Albuquerque, New Mexico (USA), January 1992.Google Scholar
- T. Le Sergent and B. Berthomieu. Incremental multi-threaded garbage collection on virtually shared memory architectures. In Proc. Int. Workshop on Memory Management, number 637 in Lecture Notes in Computer Science, pages 179–199, Saint-Malo (France), September 1992. Springer-Verlag.Google Scholar
- Scott Nettles and James O’Toole. Real-time replication garbage collection. In Proceedings of the Conference on Programming Language Design and Implementation, pages 217–226, Albuquerque, N. Mexico, June 1993. ACM-SIGPLAN.Google Scholar
- David Plainfossé. Distributed Garbage Collection and Reference Management in the Soul Object Support System. PhD thesis, Université Paris-6, Pierre-et-Marie-Curie, Paris (France), June 1994. Available from INRIA as TU-281, ISBN-2-7261-0849-0.Google Scholar
- M. Satyanarayanan, Henry H. Mashburn, Puneet Kumar, David C. Steere, and James J. Kistler. Lightweight recoverable virtual memory. In Proceedings of the 14th ACM Symposium on Operating Systems Principles, pages 146–160, Asheville, NC (USA), December 1993.Google Scholar
- Marc Shapiro, Peter Dickman, and David Plainfossé. SSP chains: Robust, distributed references supporting acyclic garbage collection. Rapport de Recherche 1799, Institut National de 1a Recherche en Informatique et Automatique, Roc-quencourt (France), nov 1992. Also available as Broadcast Technical Report #1.Google Scholar
- David Ungar. Generation scavenging: A non-disruptive high performance storage reclamation algorithm. Proceedings of the ACM SIGSOFT/SIGPLAN Software Engineering Symposium on Practical Software Development Environments, SIGPLAN Notices, 19(5):157–167, 1984.Google Scholar
- B. Zorn. Comparing mark-and-sweep and stop-and-copy garbage collection. In Proc. 1990 ACM Conf. on Lisp and Functional Programming, pages 87–98, Nice, France, June 1990.Google Scholar