This program is tentative and subject to change.
<p>
Large-scale, revenue-critical application services are often written in Java or other memory-safe languages whose type systems do not expose immutable state.
Such applications are especially exposed to garbage collection performance overheads because latency, throughput, and memory consumption are first-order concerns for service providers.
We observe that: i) An important class of server applications are request-based: they scale by concurrently servicing large numbers of <i>quasi-independent</i> requests. ii) Object lifetimes are strongly tied to request lifetimes. iii) Most objects remain private to the request in which they were allocated. iv) Global operations are the primary impediment to responsiveness at scale.
</p>
<p>
If we could perform <i>request-private garbage collection</i>, we might achieve both responsiveness and efficiency at scale.
Unfortunately, this straightforward insight runs into significant practical problems.
The most obvious of these is that a request-private collection cannot safely move objects that may be referenced outside the scope of that request, and yet moving objects is a requirement of most modern high performance collector designs.
This dilemma can be sidestepped by exploiting immutability, which is unfortunately not practical in languages like Java whose type systems do not expose it.
We develop Iso, a garbage collector for request-based services that exploits a mark-region heap structure to solve these impediments and deliver outstanding performance.
</p>
<p>
The key contributions of this paper are that: i) We use opportunistic copying to solve the problem of practical thread-local garbage collection for languages without exploitable immutability. ii) We provide the first detailed analysis of the behavior of Java workloads with respect to thread-local collection, identify shortcomings of existing benchmarks and introduce a new one. iii) We design, implement, and evaluate Iso, a practical and effective request-private GC.
We show that dynamic tracking of object visibility, a prerequisite for request-private GC, incurs an overhead of just 2% for important request-based workloads including Tomcat and Spring.
Iso demonstrates that for suitable workloads, request-based garbage collection is extremely effective, outperforming OpenJDK with its default collector, G1, by 32% and 22% in execution time in a modest heap.
This work presents the first request-private garbage collector for Java.
It shows a promising way forward for highly responsive collection on an important class of large scale workloads.
</p>
This program is tentative and subject to change.
Fri 20 JunDisplayed time zone: Seoul change
10:30 - 12:10 | |||
10:30 20mTalk | Verifying General-Purpose RCU for Reclamation in Relaxed Memory Separation Logic PLDI Research Papers Jaehwang Jung Rebellions Inc, Sunho Park KAIST, Janggun Lee KAIST, Jeho Yeon KAIST, Jeehoon Kang KAIST DOI | ||
10:50 20mTalk | Leveraging Immutability to Validate Hazard Pointers for Optimistic Traversals PLDI Research Papers DOI | ||
11:10 20mTalk | Iso: Request-Private Garbage Collection PLDI Research Papers Tianle Qiu Australian National University, Stephen M. Blackburn Google; Australian National University DOI | ||
11:30 20mTalk | CRGC: Fault-Recovering Actor Garbage Collection in Pekko PLDI Research Papers Dan Plyukhin University of Southern Denmark, Gul Agha University of Illinois at Urbana-Champaign, Fabrizio Montesi University of Southern Denmark DOI | ||
11:50 20mTalk | RRR-SMR: Reduce, Reuse, Recycle: Better Methods for Practical Lock-Free Data Structures PLDI Research Papers DOI |