BFQ I/O Scheduler


BFQ is a proportional share disk scheduling algorithm, based on CFQ, that supports hierarchical scheduling using a cgroups interface.

Paolo is currently maintaining the code, so refer to his page on BFQ for updates.

Here you can find the sources, a brief description of the latest BFQ implementation and of its tunables, and some testing results. Please refer to this page on Paolo's site for a complete and more formal description of the scheduler, the paper introducing it, and a complete performance comparison with other schedulers from the literature, carried out using an older implementation of BFQ.


  • 24 September 2008. Address the issues pointed out during the first review:
    • use a bitmap to signal ioprio changes to I/O schedulers.
    • Introduce a timeout to limit the huge delays that could happen with seeky traffic.
    • Introduce hierarchical scheduling.
  • 08 April 2008. Fix a wrong assertion on idle queues (they can become an ->active_queue), and clean up some leftover from CFQ code import. Also use a different ioprio_changed ioc field for bfq and fix the memory barriers used to handle it.
  • 07 April 2008. Backport the rcu-safe cic freeing from mainline CFQ.
  • 03 April 2008. Initial release.

Last updated November 5th, 2008