xNVMe and io_uring NVMe Passthrough – What does it Mean for the SPDK NVMe Driver?

Almost 10 years ago, the SPDK userspace polled mode nvme driver showed performance and efficiency far surpassing what was capable with the Linux kernel. But in recent years, Linux has responded with io_uring and asynchronous NVMe passthrough interfaces. The xNVMe project has also helped storage projects and applications adapt to the ever-growing list of Linux storage interfaces. This talk will compare the strengths of the SPDK and Linux NVMe drivers, explain how xNVMe has enabled io_uring NVMe passthrough in SPDK, and share some early performance results.

Simon Lund
Samsung
Abstract

Almost 10 years ago, the SPDK userspace polled mode nvme driver showed performance and efficiency far surpassing what was capable with the Linux kernel. But in recent years, Linux has responded with io_uring and asynchronous NVMe passthrough interfaces. The xNVMe project has also helped storage projects and applications adapt to the ever-growing list of Linux storage interfaces. This talk will compare the strengths of the SPDK and Linux NVMe drivers, explain how xNVMe has enabled io_uring NVMe passthrough in SPDK, and share some early performance results.

Learning Objectives

  • Differences between operating system and user space driven I/O
  • Obstables to achieving high performance with io_uring and io_uring command
  • Obstables to achieving high performance with user space drivers

Related Sessions