On Wed, 2009-09-09 at 08:13 +0200, Ingo Molnar wrote:* Jens Axboe<jens.axboe@xxxxxxxxxx> wrote:
On Tue, Sep 08 2009, Peter Zijlstra wrote:On Tue, 2009-09-08 at 11:13 +0200, Jens Axboe wrote:And here's a newer version.
I tinkered a bit with your proglet and finally found the
problem.
You used a single pipe per child, this means the loop in
run_child() would consume what it just wrote out until it got
force preempted by the parent which would also get woken.
This results in the child spinning a while (its full quota) and
only reporting the last timestamp to the parent.
Oh doh, that's not well thought out. Well it was a quick hack :-)
Thanks for the fixup, now it's at least usable to some degree.
What kind of latencies does it report on your box?
Our vanilla scheduler default latency targets are:
single-core: 20 msecs
dual-core: 40 msecs
quad-core: 60 msecs
opto-core: 80 msecs
You can enable CONFIG_SCHED_DEBUG=y and set it directly as well via
/proc/sys/kernel/sched_latency_ns:
echo 10000000> /proc/sys/kernel/sched_latency_ns
He would also need to lower min_granularity, otherwise, it'd be larger
than the whole latency target.