Re: Kernel 2.6 on MPC8xx performance trouble...
From: Roger Larsson <hidden>
Date: 2005-10-28 09:36:12
On Friday 28 October 2005 08.57, David Jander wrote:
Hi all,
Many people have said it before: 2.6 has a performance penalty specially
for embdedded systems.
But now that I have 2.6 running on our 100MHz MPC852T based board, I was
shocked to see the result:
The most simple task doing nothing but a closed loop of integer math runs
at _half_ the speed compared to kernel 2.4.25!!!!!
Here are the conditions for the test:
- Bogomips are the same, so the CPU definitely runs at the same clock-rate
(and not half) as with "2.4".
- Enabling and disabling preemption doesn't have any impact (as expected
for such kinds of tasks).
- Setting HZ to 100 or 1000 also has only about 3% impact on speed.
- The binary of the test program is the same in both cases (no re-compile
with other optimizations by accident).
- The hardware is the same (exact same board).
- Certain hardware drivers that are not ported to "2.6" yet were present in
"2.4" but (obviously) not in "2.6", but non of them could have a _positive_
impact on performance.
- Kernel versions are 2.4.25 (denx-devel) and 2.6.14-rc5 (denx-git
20051027).
Result: The test takes 3 seconds on kernel-2.6 and 1.5 seconds on
kernel-2.4. Here is what "time" has to say about it:
real 0m3.119s
user 0m3.080s
sys 0m0.040s
The test loop is pretty brain-dead, but that doesn't matter right now.
This is it:
[....]
gettimeofday(&tv0,NULL);
for(t=0L; t<10000000L; t++)
{
a+=b; /* Do something */
}
gettimeofday(&tv,NULL);
[...]
Any ideas?
Am I misconfiguring something? Is 2.6 support for mpc8xx still broken
(cache/tlb, mm, etc) or is 2.6 supposed to perform THAT bad??Have you verified the system measured time with wall clock (wrist watch)? System time could be wrong on one of the systems. What is 'a' and 'b'? The only other explanation I can see is that your "Do something" is more memory heavy than you think - array calculations? (Cache problems should probably give a worse result, but you could check that those config registers are the same). /RogerL