Ingo Molnar a écrit : > * Jie Chen 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)