Budget Fair Queueing (BFQ)
Budget Fair Queueing is a Linux I/O scheduler that uses weighted queues and sector budgets to distribute storage service.
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. [1]
With 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. [1]
Concurrency: 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. [2]
Relations
Citations
- Linux 6.16: BFQ, budgets, priority classes and low_latency
- Linux v6.16: bfq-iosched.c, __bfq_dispatch_request and bfq_insert_request