xNVMe: Unleashing Storage Hardware-Software Co-design
Simon A. F. Lund, Vivek Shah

TL;DR
xNVMe is a unified, open-source API that simplifies and standardizes access to NVMe storage hardware across different operating systems and libraries, facilitating easier development and broader adoption.
Contribution
The paper introduces xNVMe, a single message-passing API that unifies diverse storage I/O paths for NVMe devices across multiple OS and libraries, with minimal overhead.
Findings
xNVMe supports multiple OS and libraries with minimal overhead
It has gained industry traction as an open-source project
The paper shares lessons learned and future plans for xNVMe
Abstract
NVMe SSD hardware has witnessed widespread deployment as commodity and enterprise hardware due to its high performance and rich feature set. Despite the open specifications of various NVMe protocols by the NVMe Express group and NVMe being of software abstractions to program the underlying hardware. The myriad storage I/O paths such as POSIX storage API, ad-hoc OS mechanisms, and userspace I/O libraries have different syntax and semantics that complicate software development and stand in the way of mass adoption and evolution of the NVMe ecosystem. To unify the diverse I/O storage paths, we built xNVMe that exposes a single message-passing API to support both asynchronous and synchronous communication with NVMe devices. xNVMe provides various command sets to support diverse storage I/O paths in different OS (e.g., Linux, FreeBSD, Windows, and MacOS) and userspace libraries (e.g., SPDK)…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsAdvanced Data Storage Technologies · Distributed and Parallel Computing Systems · Parallel Computing and Optimization Techniques
