[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1252423398.7746.97.camel@twins>
Date: Tue, 08 Sep 2009 17:23:18 +0200
From: Peter Zijlstra <a.p.zijlstra@...llo.nl>
To: Jens Axboe <jens.axboe@...cle.com>
Cc: Ingo Molnar <mingo@...e.hu>, Con Kolivas <kernel@...ivas.org>,
linux-kernel@...r.kernel.org, Mike Galbraith <efault@....de>
Subject: Re: BFS vs. mainline scheduler benchmarks and measurements
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.
Since consumer (parent) is a single thread the program basically
measures the worst delay in a thundering herd wakeup of N children.
The below version yields:
idle
[root@...eron sched]# ./latt -c8 sleep 30
Entries: 664 (clients=8)
Averages:
------------------------------
Max 128 usec
Avg 26 usec
Stdev 16 usec
make -j4
[root@...eron sched]# ./latt -c8 sleep 30
Entries: 648 (clients=8)
Averages:
------------------------------
Max 20861 usec
Avg 3763 usec
Stdev 4637 usec
Mike's patch, make -j4
[root@...eron sched]# ./latt -c8 sleep 30
Entries: 648 (clients=8)
Averages:
------------------------------
Max 17854 usec
Avg 6298 usec
Stdev 4735 usec
View attachment "latt.c" of type "text/x-csrc" (9215 bytes)
Powered by blists - more mailing lists