Flexible Data Placement Open Source Ecosystem

Abstract

Flexible Data Placement (FDP) represents the latest development in mainstream data placement technology for NVMe. Although its use-cases resemble those of other NVMe features, such as Streams and ZNS, the differences have significant implications for the implementation within host storage stacks and applications. As host stacks adopt various data placement technologies, the risk of bloated codebases and redundant implementations rises, increasing maintenance costs for large mainline projects. In this presentation, we discuss the efforts to integrate FDP support in Linux, ranging from QEMU emulation to different I/O paths (e.g., Linux Kernel I/O Passthru, SPDK), libraries (e.g., xNVMe), and tools (e.g., fio, nvme-cli). We highlight the design decisions made to enable early adoption without depending on major Linux kernel block layer changes. Additionally, we provide an overview of the FDP stack implementation in two example applications: Cachelib and RocksDB. We use these examples to look at WAF behaviour as well as evaluate the engineering efforts of adoption.

Adam Manzanares
Samsung Electronics
Related Sessions