[ANNOUNCE] bfq disk I/O scheduler

Paolo Valente posta_paolo at yahoo.it
Wed Aug 4 10:52:07 BST 2010

I have been working for a few years (with Fabio Checconi) on a disk
scheduler providing definitely lower latencies than cfq, as well as a
higher throughput with most of the test workloads we used (or the same
throughput as cfq with the other workloads). We named this scheduler
bfq (budget fair queueing). I hope this is the right list for announcing
this work.

One of the things we measured in our tests is the cold-cache execution
time of a command as, e.g., "bash -c exit", "xterm /bin/true" or
"konsole -e /bin/true", while the disk was also accessed by different
combinations of sequential, or random, readers and/or
writers. Depending on which of these background workloads was used,
these execution times were five to nine times lower with bfq under
2.6.32. Under 2.6.35 they were instead from six to fourteen times
lower. The highest price paid for these lower latencies was a 20% loss
of aggregated disk throughput for konsole in case of background
workloads made only of sequential requests (due to the fact that bfq
of course privileges, more than cfq, the seeky IO needed to load
konsole and its dependencies). In contrast, with shorter commands, as
bash or xterm, bfq also provided up to 30% higher aggregated

We saw from 15% to 30% higher aggregated throughput also in our
only-aggregated-throughput tests. You can find in [1] all the details
on our tests and on other nice features of bfq, such as the fact that
it perfectly distributes the disk throughput as desired, independently
of disk physical parameters like, e.g., ZBR. in [1] you can also find
a detailed description of bfq and a short report on the maturity level
of the code (TODO list), plus all the scripts used for the tests.

The results I mentioned so far have been achieved with the last
version of bfq, released about two months ago as patchsets for 2.6.33
or 2.6.34. From a few days a patchset for 2.6.35 is available too, as
well as a backport to 2.6.32. The latter has been prepared by Mauro
Andreolini, who also helped me a lot with debugging. All these patches
can be found here [2]. Mauro also built a binary kernel package for
current lucid, and hosted it into a PPA, which can be found here [3].

A few days after being released, this version of bfq has been
introduced as the default disk scheduler in the Zen Kernel. It has
been adopted as the default disk scheduler in Gentoo Linux too. We
also recorded downloads from users with other distributions, including
ArchLinux and Ubuntu itself. As of now we received only positive


[1] http://algo.ing.unimo.it/people/paolo/disk_sched/
[2] http://algo.ing.unimo.it/people/paolo/disk_sched/sources.php
[3] Ubuntu PPA: ppa:mauro-andreolini/ubuntu-kernel-bfq

More information about the ubuntu-devel mailing list