Abstract Eichler

Christian Eichler, Henriette Hofmeier, Wolfgang Schröder-Preikschat and Timo Hönig

Neverlast and beyond: Handling volatility in NVRAM-centric operating systems

Non-volatile main-memory technologies slowly but surely make their way into modern computing platforms – ranging from small embedded devices, such as the MSP430, to highly capable data-center systems built around Intel’s Optane PMem.

Even though these systems’ main memories do not depend on power being available for retaining data, all systems still incorporate ordinary, volatile memories whose data is lost on power loss.

These volatile memories include CPU and configuration registers but also “invisible” components such as caches and the peripherals’ configurations.

The transition from volatile to non-volatile main memory comes with opportunities, but also with challenges:

General-purpose operating systems, such as Linux, conduct a variety of periodic “flush” operations to persist cached changes to reduce the amount of data loss on power outages.
The Linux inode cache is an example of such a periodically flushed cache.

When running on non-volatile main memory, the cached changes are no longer endangered on power loss – and thus, the periodic flush operation is superfluous and could be removed.
Removing these flush operations result in a smaller and faster operating system with reduced jitter.

However, the combination of volatile and non-volatile components inevitably leads to challenges regarding the data consistency when losing the volatile state:
The loss of data stored in the volatile memory that is closely related to the data in the non-volatile memory, such as data in write-back caches, must be considered and handled properly.

For hardware centered around NVRAM, removing superfluous operations on the one hand and introducing new consistency measures, on the other hand, leads to significant changes to the operating systems.

This talk gives an overview of the adoptions to NVRAM implemented in Neverlast and discusses further paths towards operating systems dedicated to working primarily with non-volatile main memories.