{
  "status": "shipping",
  "advantages": [],
  "limitations": [],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-20",
  "slug": "blk-mq",
  "term": "Linux blk-mq",
  "aliases": [
    "Multi-Queue Block I/O"
  ],
  "definition": "Linux blk-mq is the block-layer mechanism that stages and dispatches I/O through multiple software and hardware queues.",
  "note": "Software staging can support merging and I/O scheduling before requests reach hardware dispatch queues. Selecting the none scheduler does not bypass the complete kernel block layer. [blk-mq]\n\nQueue topology alone does not provide a per-application latency guarantee. Neither the block layer nor the device protocol guarantees completion order, so higher layers must enforce required dependencies. [blk-mq]",
  "related": [
    "nvme",
    "queue-depth",
    "inter-flow-interference",
    "io-uring"
  ],
  "citations": [
    {
      "id": "blk-mq",
      "title": "Linux kernel documentation: Multi-Queue Block IO Queueing Mechanism, operation, schedulers and hardware dispatch queues.",
      "url": "https://docs.kernel.org/block/blk-mq.html",
      "accessed": "2026-10-20"
    },
    {
      "id": "hesela",
      "title": "Hesela: Sharing an SSD: who pays for the slowdown?",
      "url": "https://hesela.com/analyses/ssd-fairness-shared-queues/",
      "accessed": "2026-10-20"
    }
  ]
}
