A Case for Virtualizing Persistent Memory
With the proliferation of software and hardware support for persistent memory (PM) like PCM and NV DIMM, we envision that PM will soon become a standard component of commodity cloud, especially for those applications demanding high performance and low latency. Yet, current virtualization software lacks support to efficiently virtualize and manage PM to improve cost effectiveness, performance, and endurance. In this paper, we make the first case study on extending commodity hypervisors to virtualize PM. We explore design spaces to abstract PM, including load/store accessible guest physical memory and a block device. We design and implement a system, namely VPM, which provides both full virtualization as well as a para virtualization interface that provide persistence hints to the hypervisor. By leveraging the fact that PM has similar characteristics with DRAM except for persistence, VPM supports transparent data migration by leveraging the two dimensional paging (e.g. EPT) to adjust the mapping between guest PM to host physical memory (DRAM or PM) Finally, VPM provides efficient crash recovery by properly bookkeeping guest PM's states as well as key hypervisor based states into PM in an epoch based consistency approach. Experimental results with VPM implemented on KVM and Linux using simulated PCM and NVDIMM show that VPM achieves a proportional consolidation of PM with graceful degradation of performance. Our para virtualized interface further improves the consolidation ratio with less overhead for some workloads.
SoCC