Re: [Announce] [patch] Modular Scheduler Core and Completely Fair Scheduler [CFS]

Ingo Molnar
2007-04-14T10:37:00Z

* Willy Tarreau <w@1wt.eu> wrote:

> > this fix is not complete - because the child runqueue is locked
> > here, not the parent's. I've fixed this properly in my tree and have
> > uploaded a new sched-modular+cfs.patch. (the effects of the original
> > bug are mostly harmless, the rbtree position gets corrected the
> > first time the parent reschedules. The fix might improve heavy
> > forker handling.)
>
> It looks like it did not reach your public dir yet.

oops, forgot to do the last step - should be fixed now.

> BTW, I've given it a try. It seems pretty usable. I have also tried
> the usual meaningless "glxgears" test with 12 of them at the same
> time, and they rotate very smoothly, there is absolutely no pause in
> any of them. But they don't all run at same speed, and top reports
> their CPU load varying from 3.4 to 10.8%, with what looks like more
> CPU is assigned to the first processes, and less CPU for the last
> ones. But this is just a rough observation on a stupid test, I would
> not call that one scientific in any way (and X has its share in the
> test too).

ok, i'll try that too - there should be nothing particularly special
about glxgears.

there's another tweak you could try:

echo 500000 > /proc/sys/kernel/sched_granularity_ns

note that this causes preemption to be done as fast as the scheduler can
do it. (in practice it will be mainly driven by CONFIG_HZ, so to get the
best results a CONFIG_HZ of 1000 is useful.)

plus there's an add-on to CFS at:

http://redhat.com/~mingo/cfs-scheduler/sched-fair-hog.patch

this makes the 'CPU usage history cutoff' configurable and sets it to a
default of 100 msecs. This means that CPU hogs (tasks which actively
kept other tasks from running) will be remembered, for up to 100 msecs
of their 'hogness'.

Setting this limit back to 0 gives the 'vanilla' CFS scheduler's
behavior:

echo 0 > /proc/sys/kernel/sched_max_hog_history_ns

(So when trying this you dont have to reboot with this patch
applied/unapplied, just set this value.)

> I'll perform other tests when I can rebuild with your fixed patch.

cool, thanks!

Ingo