Exploiting Managed Language Semantics to Mitigate Wear-Out in Persistent Memory

Library Content Type:
Publish Date: 
Wednesday, August 7, 2019
Event Name: 
Focus Areas:

Emerging persistent memories such as Phase Change Memory (PCM) offer more capacity than DRAM. Unfortunately, PCM suffers from high latency and limited write endurance. Emerging memory systems combine DRAM and PCM to form hybrid memories. Hardware wear-leveling then spreads writes out across the entire PCM capacity. Even with wear-leveling, popular Java applications running on top of a PCM-only system leads to impractical PCM lifetimes. Also, coarse-grained OS approaches that migrate highly-written pages to DRAM bear several inefficiencies. 

In this talk, I will motivate garbage collection in managed runtimes such as the Java Virtual Machine as an abstraction to mitigate PCM wear-out in hybrid DRAM-PCM memories. I will show a detailed analysis of writes in popular Java applications: (1) distribution of writes over objects in the virtual heap, and (2) distribution of writes by allocation-site in Java programs. The key insights from this analysis lead to a new class of write-rationing garbage collectors that exploit fine-grained object behaviors in Java applications to limit PCM writes. They extend PCM lifetime by placing highly written objects in DRAM and the rest in PCM. 

I will discuss Kingsguard, a write-rationing garbage collector that dynamically monitors writes to place highly written objects in DRAM. I will then introduce Crystal Gazer, a profile-driven write-rationing garbage collector that exploits static profiling of writes on a per allocation-site basis to place highly written objects in DRAM. Write-rationing garbage collection makes PCM a practical DRAM replacement by aggressively limiting writes to it in a hybrid memory configuration. It requires no extra hardware and OS support and enables the use of PCM for commodity applications by leaving the programming language and model unchanged.