I/O interface independence with xNVMe

Simon A. F. Lund, Philippe Bonnet, Klaus B. A. Jensen, Javier Gonzalez
2022 Proceedings of the 15th ACM International Conference on Systems and Storage  
The tight coupling of data-intensive systems and I/O interface has been a problem for years. A database system, relying on an specific I/O backend for direct asynchronous I/Os such as libaio, inherits its limitations in terms of portability, expressiveness and performance. The emergence of high-performance NVMe Solid-State Drives (SSDs), enabling new command sets, compounds this problem. Indeed, efforts to streamline the I/O stack have led to the introduction of new, complex and idiosyncratic
more » ... O interfaces such as SPDK, io_uring or asynchronous ioctls. What is the appropriate I/O interface for a given system? How can applications effectively leverage SSD and end-to-end I/O interface innovations? Is I/O interface lock-in a necessary evil for dataintensive systems and storage services? Our answer to the latter question is no. Our answer to the former questions is xNVMe, a cross-platform user-space library that provides I/O-interface independence to user-space software. In this paper, we present the xNVMe API, we detail its design and we show that xNVMe has a negligible cost atop the most efficient I/O interfaces on Linux, FreeBSD and Windows. CCS CONCEPTS • Software and its engineering → Secondary storage.
doi:10.1145/3534056.3534936 fatcat:yrnjvfupyze57bzvazwnh3vazu