In general are three options to investigate:
- Store different levels of the LSM tree on different devices
- Split the WT cache across DRAM and NVRAM
- Make the block manager hierarchical, so that we can use NVRAM as a block-level cache
The first option was explored in detail in related work, and since LSM is not the dominant focus of WiredTiger, we will not pursue this goal.
The second option is challenging to do programmatically, so we investigate how to accomplish it using a transparent hardware mechanism Intel Memory Mode that allows to use NVRAM as a volatile extension of system DRAM. We describe our results in the attached document (MM-vs-NVCache.pdf).
To explore the third option, we built a NVCache – a component of WiredTiger that caches disk blocks in NVRAM. It is described in the other attached document (NVCache.pdf).