[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4756CEEE.9050908@cosmosbay.com>
Date: Wed, 05 Dec 2007 17:16:46 +0100
From: Eric Dumazet <dada1@...mosbay.com>
To: Ingo Molnar <mingo@...e.hu>
CC: Jie Chen <chen@...b.org>, Simon Holm Th??gersen <odie@...aau.dk>,
linux-kernel@...r.kernel.org,
Peter Zijlstra <a.p.zijlstra@...llo.nl>
Subject: Re: Possible bug from kernel 2.6.22 and above, 2.6.24-rc4
Ingo Molnar a écrit :
> * Jie Chen <chen@...b.org> wrote:
>
>> I just ran the same test on two 2.6.24-rc4 kernels: one with
>> CONFIG_FAIR_GROUP_SCHED on and the other with CONFIG_FAIR_GROUP_SCHED
>> off. The odd behavior I described in my previous e-mails were still
>> there for both kernels. Let me know If I can be any more help. Thank
>> you.
>
> ok, i had a look at your data, and i think this is the result of the
> scheduler balancing out to idle CPUs more agressively than before. Doing
> that is almost always a good idea though - but indeed it can result in
> "bad" numbers if all you do is to measure the ping-pong "performance"
> between two threads. (with no real work done by any of them).
>
> the moment you saturate the system a bit more, the numbers should
> improve even with such a ping-pong test.
>
> do you have testcode (or a modification of your testcase sourcecode)
> that simulates a real-life situation where 2.6.24-rc4 performs not as
> well as you'd like it to see? (or if qmt.tar.gz already contains that
> then please point me towards that portion of the test and how i should
> run it - thanks!)
>
> Ingo
I cooked a program shorter than Jie one, to try to understand what was going
on. Its a pure cpu burner program, with no thread synchronisation (but the
pthread_join at the very end)
As each thread is bound to a given cpu, I am not sure the scheduler is allowed
to balance to an idle cpu.
Unfortunatly I dont have a 4 way SMP idle machine available to
test it.
$ gcc -O2 -o burner burner.c
$ ./burner
Time to perform the unit of work on one thread is 0.040328 s
Time to perform the unit of work on 2 threads is 0.040221 s
I tried it on a 64 way machine (Thanks David :) ) and noticed some strange
results that may be related to the Niagara hardware (time for 64 threads was
nearly the double for one thread)
View attachment "burner.c" of type "text/plain" (2302 bytes)
Powered by blists - more mailing lists