[gsoc] BFQ scheduler: progress (and problem encountered)

Brills Peng brillsp at gmail.com
Wed Jul 6 07:34:49 PDT 2011


According to the plan[1] I posted earlier, I have completed the request
polling emulation part and the first version of BFQ scheduler.

The code is at [2], and I am currently working on branch dsched_BFQ.

The first version is implemented according to the algorithm on the BFQ
tech report[3] written by Paolo Valente (the inventer of BFQ). However,
that report have hidden some details that may be possible optimizing
points, such as:
  - Dynamically changing maximum budget (currently hard wired in bfq.h)
  - Dynamically changing anticipatory waiting time (currently hard wired
in bfq.h)
  - A good selecting function which can distinct between sync and async
requests from one process(currently a simple FIFO per process)

I will have to take a look at the implementation on Linux and add those
features into our BFQ in next versions (I will take the ideas but the code).

Currently, there is a known bug in the first version, under the vkernel:
Whenever I "cat"ing a large file (ls -R / > list; cat list), the system
will stick a wile and has the following debug line printed:
	wkt_acquire: stuck: td 0x54479c50 td->td_flags 00800821

I do not know if it means that the system deadlocks on that situation,
but I looked into my code and find nowhere to deadlock. Can anybody help
me and give me some suggestions on it?

[1] http://leaf.dragonflybsd.org/mailarchive/kernel/2011-04/msg00060.html
[2] git://leaf.dragonflybsd.org/~brillsp/dragonfly.git
[3] http://algo.ing.unimo.it/people/paolo/disk_sched/bfq-techreport.pdf


Brills Peng

More information about the Kernel mailing list