Qestions about dsched and fq policy

Brills Peng brillsp at gmail.com
Sat Mar 19 23:00:15 PDT 2011


Hello again,
Thanks to Justin, Alex and Venkatesh's help, I have set up a VM running
DragonFlyBSD now and I looked into codes reside in sys/kern/kern_dsched.c,
sys/kern/dsched/fq/ and came up with some questions:

1. The fq scheduler seems to create one thread for each disk, but I found a
piece of comment at fq_core.c:114 indicating that there may be more than one
tdio assigned to a diskctx. I could not find a chance to create such threads
when thinking through the whole procedure of scheduling:
	- The fq_prepare() function creates a dispatcher thread when attaching to 
	a disk
	- An io request comes from higher level, and invokes dsched_queue() to
	  find a proper thread to handle this and then calls fq_queue() which may
	  dispatch the request or insert it into the thread's queue. Note that
	  there is only one thread related is that dispatcher.
	- The dispatcher thread checks the queue when the disk is idle, and tries
	  to dispatch the request in the queue.

2. The 'fair share' should relate to processes sending io requests, but I
have no idea on how the implementation in fq_core.c works. Each process
should have its own queue and a budgets to consume but the queue and budgets
seem to be per-thread. If there is only one such thread for each disk, then 
the scheduler acts like a FIFO queue.

3. Is it possible and proper to implement disk's arm scheduling in dsched?
e.g, a queue sorted by arm position to increase the throughput of FQ
scheduler. 

There must be something wrong in my perception above, because the procedure 
is different from the one depicted in sys/kern/dsched/fq/flow.txt

And another questions about the 'Implement further dsched disk scheduling
policies' on GSoC idea list:
DragonFlyBSD has a FQ scheduler right now, but why another policy to
improve interactivity, since the 'fair' guarantees a not bad interactivity?

And the final question:
Justin mentioned an application form on GSoC site, but according to Google's
plan, students' handing in their applications starts at March 29. Should I
send an application to the community in advance and then another to Google
after March 29?

Thanks


Brills Peng





More information about the Kernel mailing list