On Wed, Feb 07, 2001 at 09:22:43AM +0000, Alan Cox wrote:
> > kernel on gcc 2.91, running SCI benchmarks, then compiling on RedHat 
> > 7.1 (Fischer) with gcc 2.96, the 2.96 build DROPPED 30% in throughput
> > from the gcc 2.91 compiled version on the identical SAME 2.4.1 
> > source tree. 
> 
> 30% is too big to be caused by a compiler. Way too big.I suggest you review
> your code.

I went back and looked at what was being generated.  for the sci copy testing,
the MTRR settings are changed to enable write combining, which causes the 
PCI bus to burst data whenever the SCI mapped page hits a cache line 
during copy operations -- speeds it up by 20-30% over DMA methods using 
the same adapters.  

I looked into this, and discovered that the gcc 2.96 compiler turned my 
rep movsd code into a rep movsb (???) with some evil looking C++ style 
jump table in the assembler code that jumped all over the place, which 
is what caused the performance test numbers to drop.  DMA numbers were 
the same on both kernels with the dma_test benchmark -- they were not 
with the sci_bench2 program.   

They deviated by 30%, indicating that my MTRR write combining optimization
was not working properly in sci copy mode.  

Jeff


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/

Reply via email to