BFQ and related stuff on disk scheduling

BFQ is a proportional-share disk scheduling algorithm that also supports hierarchical scheduling with a cgroups interface. One of the nice features of BFQ is that, according to our results on rotational disks, whatever the load is, the disk is virtually as responsive if it was idle. For example, even if one ore more large files are being read or written, starting a command/application takes about the same time as if the disk was idle. Also soft real-time applications, such as audio and video players or audio audio- and video-streaming applications, enjoy about the same latencies regardless of the disk load. As a consequence, these applications do not suffer from almost any glitch due to the background workload.

At the same time, BFQ achieves up to 30% higher throughput than CFQ with most workloads (and about the same throughput with the rest of the workloads we have considered). As for long-term guarantees, BFQ distributes the disk throughput as desired to disk-bound applications (and not just the disk time), with any workload and independently of the disk parameters. More details on the features of BFQ can be found here.

Systems adopting BFQ

BFQ can be found in various Linux distributions, such as Arch Linux, Gentoo Linux and Sabayon. I have also recorded downloads from people using other distributions as, e.g., Ubuntu and Mandriva. Besides, BFQ is used in the Zen Kernel and in the pf-kernel as the default disk scheduler. Finally, the CyanogenMod distribution of Android has switched to BFQ too. In the end, BFQ should be exposed to a userbase in the order of 200-300K users. So far, the users that gave us feedback confirmed the expected latency drop and throughput boost in daily usage.

Content of this site

In these pages you can find a brief description of the properties of BFQ and of how it works, together with the scheduler interface, the available tunables and the TODO list (plus links to various technical reports). You can download the sources, and see some of the results I have obtained through the benchmark suite I have implemented to measure the performance of BFQ. Finally, there is a comparison with other production and research schedulers, including a thorough performance evaluation, carried out using an old implementation of BFQ.

Note

Any proposal, information or suggestion on how to find resources to support this project is welcome (interested organizations, research projects, ...). You can also help by just donating through PayPal:

 
Last updated: May 15 2012.
Paolo Valente (paolo DOT valente AT unimore DOT it)

Valid HTML 4.01! Valid CSS!