A Low-Latency Garbage Collector for GHC (Demo)
summary
A hybrid collector moves short-lived allocations with the existing copying GC while promoting old data into a non-moving generation collected with concurrent mark-and-sweep and a mutator right barrier. Measured on a ~7 GB heap server workload it cuts major pause tails from seconds to 1.5 ms preparatory pause and <1 ms final sync, reduces 99.9th-percentile request latency by 5–50×, costs ~10% throughput, increases memory 10–25%, and lengthens minor pauses 2–4×.
AI-written summary · about
chapters (7)
- 0:00Introduction to GHC's GC
- 1:46The Problem with Copying GC
- 6:10A Hybrid GC Solution
- 9:41Implementation and Results
- 12:35Latency and Fragmentation
- 15:22Throughput and Memory Costs
- 17:28Conclusion and Future Work
related talks
15mUsing MMTk Garbage Collection in GHC (Lightning Talk)
41mPinpointing memory leaks in production Haskell deployments
01h 30mGHC's Runtime System
01h 24mWhat we have learned about memory profiling in the last 5 years
27mSevering ties: the need for non-updateable thunks
30mLightweight profiling with ghc-stack-profiler
14mExecution domains in GHC/Haskell (Lightning Talk)
01h 02mOptimising for fast builds with GHC
