{
  "status": "shipping",
  "advantages": [],
  "limitations": [],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-21",
  "slug": "mq-deadline",
  "term": "mq-deadline",
  "aliases": [
    "Multi-queue deadline scheduler"
  ],
  "definition": "mq-deadline is a Linux block I/O scheduler that combines sector ordering with soft request-expiration goals for dispatch.",
  "note": "Mechanism: Requests enter sector-sorted and arrival-ordered lists, separated by direction and I/O-priority class. Expiration can select an older request over sector order. Batches, read preference and write-starvation control also affect selection. [deadline]\n\nThe expiration concerns starting service, not completing the request. It is a soft goal, so read_expire is not a bound on application read latency. Sorting and FIFO state are shared across hardware queues of the same request queue rather than independently replicated per hardware queue. [deadline]",
  "related": [
    "io-scheduler",
    "blk-mq",
    "queue-depth",
    "tail-latency"
  ],
  "citations": [
    {
      "id": "deadline",
      "title": "Linux v6.16: mq-deadline.c, soft expirations and dd_dispatch_request",
      "url": "https://github.com/torvalds/linux/blob/v6.16/block/mq-deadline.c",
      "accessed": "2026-10-21"
    },
    {
      "id": "hesela",
      "title": "Hesela: Sharing an SSD: who pays for the slowdown?",
      "url": "https://hesela.com/analyses/ssd-fairness-shared-queues/",
      "accessed": "2026-10-21"
    }
  ]
}
