mq-deadline
also: deadline scheduler, mq-deadline scheduler
mq-deadline is an I/O scheduler for the Linux kernel's multi-queue block layer that prioritizes requests by deadline, ensuring older requests don't starve while maintaining good throughput for modern storage devices.
mq-deadline is a deadline-based I/O scheduler introduced in Linux 4.10+ for the blk-mq (block multi-queue) subsystem. It sorts incoming disk I/O requests into multiple queues and dispatches them to storage devices based on their deadline expiration time, preventing request starvation while optimizing device performance.
The scheduler maintains separate read and write queues, with configurable timeout windows (typically 500ms for reads, 5s for writes). When a request's deadline approaches, it gains priority over newer requests, ensuring predictable latency for time-sensitive workloads.
Example: On a system with /sys/block/sda/queue/scheduler set to mq-deadline, a filesystem operation waiting 450ms approaches its deadline and will be dispatched before a freshly-queued request, preventing indefinite delays.
mq-deadline is commonly used on traditional HDDs and SSDs where deadline fairness matters more than pure throughput; for NVMe devices, kyber or none schedulers are often preferred.