cvs commit: src/sys/kern sched_4bsd.c

Bruce Evans bde at zeta.org.au
Sun Nov 12 06:26:12 UTC 2006


On Sun, 12 Nov 2006, David Xu wrote:

> On Sunday 12 November 2006 00:22, Bruce Evans wrote:
>> On Sat, 11 Nov 2006, David Xu wrote:
>>> davidxu     2006-11-11 13:11:30 UTC
>>>
>>>  FreeBSD src repository
>>>
>>>  Modified files:
>>>    sys/kern             sched_4bsd.c
>>>  Log:
>>>  Unbreak userland priority inheriting in NO_KSE case.
>>
>> Is this what made the non-KSE case unusable?  At least with the load
>> average bug fixed, it gave very unfair scheduling, and would only start
>> about 4 concurrent hog processes on a 2-way SMP system.
>>
>> Improvements in some benchmarks may have depended on the bugs.  Maybe
>> a random load average is optimal for some loads :-).
>
> No, this change is unrelated, the bug is in kern_idle.c, John should use
> mi_switch(), not the choosethread(), otherwise the loadavg is not
> maintianed correctly.

That's not the bug I meant.  I already had your fix for kern_idle.c.

Testing showed that nothing much is fixed.  Simple benchmarks like:

%%%
for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
do
     nice -$i sh -c "while :; do echo -n;done" &
done
top -o time
%%%

and

%%%
for i in 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
do
     nice -$i sh -c "while :; do echo -n;done" &
done
top -o time
%%%

still show that scheduling without KSE is very unfair.  They can take
several minutes to start the `top' process, and "killall sh" can take
many seconds to start unless you have an rtprio shell to start the
killall.

With KSE, the top process starts soon enough and shows just the old
4BSD scheduler bug that too many cycles are given to niced programs,
as in all versions of FreeBSD except 4.x.  Since no one uses niced
programs, this bug is unimportant.

Bruce


More information about the cvs-src mailing list