Revisiting Partial Tracing for Safe, Efficient, and Concurrent Garbage Collection in Unmanaged Languages
This program is tentative and subject to change.
Garbage collection (GC) remains a desirable yet elusive goal in unmanaged languages like C/C++ and Rust, where concurrent memory reclamation must be achieved without compiler or runtime support. Existing techniques face fundamental trade-offs among efficiency, safety, and ease of integration: tracing collectors like BDWGC incur costly stop-the-world pauses and unsafe conservative scanning, while reference counting schemes like CIRC are safe but introduce high overhead and require manual handling of cyclic data.
We present a safe, efficient, and easy-to-integrate concurrent GC library, revisiting partial tracing (PT), a concept initially conceived by Bacon et al. 22 years ago. PT is a hybrid approach that maintains reference counts for roots, ensuring safety through precise root identification, and traces from objects with non-zero counts, offering ease of integration by handling cyclic garbage. Although PT has historically been considered inefficient due to the high cost of root mutation, we overcome this limitation in two design steps. First, Concurrent Partial Tracing (CPT) introduces phase consensus, enabling concurrent phase coordination without mutator suspension and eliminating most reference-count updates during traversal. Second, Concurrent Deferred Partial Tracing (CDPT) further reduces overhead by replacing atomic root updates with a lightweight, hazard pointer (HP)-based mechanism safeguarded by a phase barrier. We show that CDPT outperforms automatic collectors like BDWGC and CIRC while being comparable to manual schemes like RCU, through both micro-benchmarks on concurrent data structures and a macro-benchmark on Moka, a production cache library.
This program is tentative and subject to change.
Fri 19 JunDisplayed time zone: Mountain Time (US & Canada) change
15:50 - 17:10 | |||
15:50 20mTalk | Revisiting Partial Tracing for Safe, Efficient, and Concurrent Garbage Collection in Unmanaged Languages PLDI Research Papers DOI Pre-print | ||
16:10 20mTalk | Dynamically Checked Deep Immutability in Python PLDI Research Papers Fridtjof Stoldt Uppsala University, Sylvan Clebsch Microsoft Azure Research, Matthew A. Johnson Microsoft Azure Research, Matthew J. Parkinson Microsoft Azure Research, Tobias Wrigstad Uppsala University DOI | ||
16:30 20mTalk | FlexHeap: Dynamic I/O-Aware Heap Resizing for Managed Applications PLDI Research Papers Iacovos G. Kolokasis Foundation for Research and Technology Hellas; University of Crete, Shoaib Akram Australian National University, Foivos Zakkak Red Hat, Polyvios Pratikakis Foundation for Research and Technology Hellas; University of Crete, Angelos Bilas Foundation for Research and Technology Hellas; University of Crete DOI | ||
16:50 20mTalk | Virtualizing Continuations PLDI Research Papers Cong Ma University of Waterloo, Jonghyun Jung University of Waterloo, Yizhou Zhang University of Waterloo DOI | ||