Programming Emerging Storage Interfaces
summary
xNVMe provides a single user-space API that maps NVMe commands to libaio/io_uring or SPDK, handles device enumeration, DMA-capable buffer allocation, request pools and callbacks, and aims for high performance and high productivity. Benchmarks show io_uring hitting ~1–2M IOPS with polling, SPDK reaching higher raw IOPS, and xNVMe adds only ~40–90 ns overhead (≈30–36 ns on a real NVMe, ≈86 ns on null-block). Source targets Linux, FreeBSD and SPDK and is slated for Q1 release.
AI-written summary · about
chapters (25)
- 0:00Intro
- 0:44Command Response Protocol
- 1:05NVME
- 1:17New Devices
- 3:51IOU Ring
- 6:16IOU Ring Limitations
- 7:22AI Axles
- 7:45NVME Axles
- 8:23Linux
- 8:49PDK
- 11:03Unified API
- 13:34Geometry
- 14:10API
- 14:43Buff
- 15:15Buffer
- 15:30Command Interface
- 15:48Command Encapsulation
- 17:31Command Completion
- 17:58Request Object
- 18:24Example
- 20:21Cost
- 21:37Latency
- 24:45Nanosecond
- 25:41Easy API
- 27:08Command Sets
