[GSoC] brief on BFQ scheduling policy

Brills Peng brillsp at gmail.com
Wed Aug 31 07:51:39 PDT 2011

Hi All,

Alex Hornung has merged the BFQ scheduling policy into the master branch
(see [1]). As mentioned in the commit log, the current version of BFQ is
highly experimental and work-in-progress, but in case that anyone wants
to try it out, I think a brief introduction is necessary.

*NOTE*: Please at least read section II before trying the BFQ scheduler!

I. Documentations

1. Result of benchmarks

You can find a detailed result of a set of benchmarks at [2]. The result
shows not only the performance of BFQ, but also that of FQ and noop,
though we have only two machines to run those benches. I have also
written a simple script to visualize the result of interbench, at [3].
If you are interested in trying new toys, you may also want to have a
compare them to the old ones, with some cool histograms (unfortunately,
the new toy may disappoint you at current status).

2. Implementation details & tuning guide

You can find it at [4] or [5], it maybe a little long, but for who have
no interests on those details, section 4 (Tuning) and 6 (Known Bugs &
Bottleneck) are enough.

A man page bfq(4) is also created. It contains some general instructions
about how to switch to BFQ and the tuning section in the documentation.

II. Known Bugs & Bottlenecks

a. [BUG] When switching to another dsched policy from BFQ, the system
may deadlock.

b. Currently, too many operations are serialized (by a helper thread
with lwkt messages) and thus the performance is not so ideal. Besides,
it is not tested on a large number of machines. It is *not* recommended
to use this version in a productivity environment.

III. Future plans

Since BFQ is a bit far from a reliable and high-proformance dsched
policy, I will continue working on it, outside the GSoC time frame.

As the first step, I plan to refactor the code, rearrange all the
synchronizations and try to use as few locks as possible to ensure

[1] http://leaf.dragonflybsd.org/mailarchive/commits/2011-08/msg00140.html
[2] http://leaf.dragonflybsd.org/~brillsp/bfq_bench/bfq_bench.html
[3] http://leaf.dragonflybsd.org/~brillsp/plot_interbench.tar.gz
[4] http://leaf.dragonflybsd.org/~brillsp/bfq_doc/bfq.html
[5] sys/kern/dsched/bfq/doc/bfq.viki

Brills Peng

More information about the Kernel mailing list