Solved Where is struct kseq defined?

In his paper "ULE: A Modern Scheduler For FreeBSD", Jeff Roberson talks about the kseq structure as being the core structure in scheduling. I found it defined here[1] in sched_ule.c, but i've also found another implementation of sched_ule.c here [2]. The second version is also the one I have on my system.

Can somebody explain to me why there are two versions of sched_ule.c? And can anyone give me any documentation on the second version?

[1] http://www.hpdc.syr.edu/~chapin/cis657/FreeBSD_5.2.1_Doxygen/sched__ule_8c-source.html
[2] http://www.leidinger.net/FreeBSD/dox/kern/html/dd/d9d/sched__ule_8c_source.html
 
To start, the first link says it's FreeBSD 5.2.1. That would have represented a very early stage of development of the ULE scheduler since it wasn't made the default until FreeBSD 7.1. See the FreeBSD 7.1 release announcement for the mention of ULE becoming the default.

https://www.FreeBSD.org/releases/7.1R/announce.html

I would advise sticking to https://svnweb.FreeBSD.org/base/ for your web based reference on the topic. That would be the authoritative version vice people's personal websites and archival copies.
 
To start, the first link says it's FreeBSD 5.2.1. That would have represented a very early stage of development of the ULE scheduler since it wasn't made the default until FreeBSD 7.1. See the FreeBSD 7.1 release announcement for the mention of ULE becoming the default.
Thank you, that cleared it up for me.
Also do you know of any good documentation on how the current ULE (the one on FreeBSD 10) works, other than the actual source code? Does it still use the current and next queue mechanism to implement fairness? Does it still have a queue for the idle threads?
 
Yes the paper I was refering to is the first implementation of the ULE scheduler. The kseq structure no longer exists. I has been replaced by
Code:
struct tdq
which holds per processor runqs and statistics.
The best documentation I've found on the current ULE scheduler is "Design and Implementation of the FreeBSD Operating System, The 2nd Edition". Hope this helps future developers viewing this thread.
 
Back
Top