Understanding the Linux Block Layer-From Single Queue to Multi-Queue Architecture
summary
Maps a real cp read/write through VFS, page cache, file system and device mapper into the block layer and shows why the legacy single-request Q stalls under many CPUs: one global queue holds locks and accepts ~32–256 IOs while modern blk-mq creates per-CPU software queues bound to hardware queues (examples: 128 CPUs, thousands of HW queues). NVMe examples show PCIe speeds (Gen3 ~3,000 MB/s, Gen4 ~7,000, Gen5 ~14,000) and huge depths — 65,000 queues × 65,000 commands — with actual conversion path bio→request→NVMe command.
AI-written summary · about
chapters (20)
- 0:00Linux block layer intro
- 1:02File copy in Linux
- 2:07Hard disk basics
- 6:28Storage interfaces evolution
- 9:01Device detection and naming
- 10:26File systems role
- 12:36LVM for storage
- 14:20Disk I/O performance
- 15:01Block layer and queues
- 18:54System calls and files
- 20:23File copy layers
- 22:11Page cache in reads
- 24:01FS requests to block layer
- 25:31Single queue block layer
- 28:44Single queue limits
- 30:08Multi-queue block layer intro
- 31:59Multi-queue advantages
- 33:03Multi-queue scalability
- 34:07NVMe command processing
- 40:21Q&A
related talks
45mLinux Storage Stack Explained
15mOPIMQ: Order Preserving IO stack for Multi-Queue Block Device
15mRearchitecting Linux Storage Stack for µs Latency and High Throughput
50mOptimizing for NVMe Drives: The 10 Microsecond Challenge
19mI/O Passthru: Upstreaming a flexible and efficient I/O Path in Linux
24mOptimizing Storage Performance for 4–5 Million IOPs
17mHow advancements in storage are triggering innovations in open-source and vice-versa
30mQEMU-Storage-Daemon and libblkio: Exploring New Shores for the QE...
