blk-mq paper note


The generation IO intensive algorithms and systems are based on two fundamental characteristics:


Three contributions to solve the block layer bottleneck:


Three main problems within current block layer:


Block multi-queu architecture:

Distribute the lock contention on the single request queue lock to multiple queues through the use of two levels of queues:

These two level design explicitly separates the two buffering functions of the staging area that was previously merged into a single queue in the Linux block layer: (i) support for IO scheduling (software level) and (ii) means to adjust the submission rate (hardware level) to prevent device buffer over run.


Device driver extensions to archieve optimal performance:


Refer to the paper: Linux Block IO: Introducing Multi-queue SSD Access on Multi-core Systems