Introducing the libblkio High-performance Block I/O API
summary
libblkio provides a single C API (library implemented in Rust) that exposes drivers for io_uring, io_uring NVMe CMD, vfio PCI/virtio-blk, vhost-user, and vhost-vdpa, plus a QEMU block driver and fio ioengine to use today. It supports blocking, event-driven, and polling modes and implements driver-level polling (using iopoll/high_prio) to remove interrupt overhead. Applications must register memory regions; mapping/unmapping per-request costs ~3x vs a persistent mapping. QEMU integration is ~700 lines and targets QEMU 7.2; libblkio 1.0 is released.
AI-written summary · about
chapters (11)
- 0:00Start
- 0:14Recap of What Block Devices Are
- 2:29Block Io Interfaces
- 3:47Vhost User Block
- 10:55Application Level Polling
- 11:34Driver Level Polling Mode
- 16:00Case Study
- 17:47Recap
- 18:50Types of Memory
- 19:07Qmu Block Drivers
- 29:22Q Pass Through
related talks
37mLarge Block I/O for Linux
47mEnabling Large Block Size devices in Linux
17mλ-IO: A Unified IO Stack for Computational Storage
50mEmulate Block Device Incidents With IO Scheduler
40mLinux Storage System Bottleneck for eMMC/UFS
22mCombining Buffered I/O and Direct I/O in Distributed File Systems
45mData Placement in Linux: Evolving Block and File I/O
41mLinux IO internals for PostgreSQL administrators in 2023
