  Modern NVMM is closing the gap between DRAM and persistent storage, both in
terms of performance and features. Having both byte addressability and
persistence on the same device gives NVMM an unprecedented set of features,
leading to the following question: How should we design an NVMM-based caching
system to fully exploit its potential? We build two caching mechanisms, NVPages
and NVLog, based on two radically different design approaches. NVPages stores
memory pages in NVMM, similar to the Linux page cache (LPC). NVLog uses NVMM to
store a log of pending write operations to be submitted to the LPC, while it
ensures reads with a small DRAM cache. Our study shows and quantifies
advantages and flaws for both designs.
