DragonFly kernel List (threaded) for 2011-03
Qestions about dsched and fq policy
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
- 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
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?