{
  "status": "shipping",
  "advantages": [],
  "limitations": [],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-21",
  "slug": "bfq",
  "term": "Budget Fair Queueing (BFQ)",
  "aliases": [
    "BFQ",
    "Budget Fair Queuing"
  ],
  "definition": "Budget Fair Queueing is a Linux I/O scheduler that uses weighted queues and sector budgets to distribute storage service.",
  "note": "Mechanism: BFQ budgets count sectors rather than a fixed service time. Weights apportion bandwidth within an I/O-priority class, while classes have distinct priorities. It can switch to time-based sharing to limit throughput loss. [bfq]\n\nWith low_latency enabled, selected interactive and soft-real-time workloads receive raised weights. Configured weights alone therefore do not predict the observed bandwidth ratio. Idling and strict service settings also change the throughput and latency trade-off. [bfq]\n\nConcurrency: In v6.16, strict_guarantees stops ordinary dispatch while tot_rq_in_driver is nonzero. Requests on the separate dispatch list are handled before that check; it is not a universal queue-depth-one invariant. The reduced parallelism can lower throughput. [bfq-source]",
  "related": [
    "io-scheduler",
    "blk-mq",
    "inter-flow-interference",
    "slowdown-fairness"
  ],
  "citations": [
    {
      "id": "bfq",
      "title": "Linux 6.16: BFQ, budgets, priority classes and low_latency",
      "url": "https://docs.kernel.org/6.16/block/bfq-iosched.html",
      "accessed": "2026-10-21"
    },
    {
      "id": "bfq-source",
      "title": "Linux v6.16: bfq-iosched.c, __bfq_dispatch_request and bfq_insert_request",
      "url": "https://github.com/torvalds/linux/blob/v6.16/block/bfq-iosched.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"
    }
  ]
}
