[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Optimizing for PentiumMMX?



I've been a faithful Debian user for several years now and quite enjoy the 
'ready-to-install' packaging of Debian. I must say that the .deb format seems 
to be one of the best and apt-get and it's friends are a god-send for those 
of us who have better things to do than figure out all the in's-N-out's of 
UNIX-type systems. In fact, the only time I've had problems was when mixing 
stable, testing and unstable. Yes, self-inflicted ;-)

Now, being un-employed for a while, and hoping to shift my skills from 
hardware-cetric towards programming and system admin, I find plenty of time 
on my hands now.

The only complaint I have about Debian is the time-lag from software release 
and inclusion in Debian. No harm to the great people who dedicate great 
amounts of time packaging stuff for Debian, but sometimes I'd like to play 
with some BETA releases.

With this in mind, and an old 200Mhz PentiumMMX lying around, I decided to 
have a go at building an optimized box without having to risk my regular box 
to the hazards that presents.

To start, I've got 3 Woody pre-release CD's from Jan 3rd 2002 from a magazine 
cover DVD. I've also got sources for KDE3 BETA2, XFree864.2.0 and the latest 
cvs's from XFree86 and the DRI stuff. I installed a base system from the 
Woody CD's plus all the development tools, so I could build the rest of the 
system.

First things first, I built a fresh 2.4.18 kernel, since most improvements 
can be made in the system calls in the kernel.

Next, I built XFree864.2.0 from the CD sources I have. I also applied a small 
patch to fix an rgb bug in the glint driver. Next I started building KDE3, 
starting with the qt libs, kde3 libs, kdebase and so on. Not all the modules 
I had would build, but thats to be expected from BETA.

Now I know that KDE is large, it took over a full week to build everything 
that would build, running 24 hours a day, but I still think I could get a bit 
more responsivness from it.

I asked my local LUG if I should consider re-building anything else to 
improve system response. GlibC was one recommendation I got. As I considered 
this, I stopped to think:
Should I re-build GlibC for i586 first,  and THEN build everything else? 
Also, how can I be sure that what I am building is taking advantage of the 
fact that I'm building on a 586 rather than the generic i386?

If I understand the process, and instruction sets correctly;
The Pentium has faster instructions that GCC can take advantage of and 
optimize the resulting binary.
On the other hand, the MMX instructions require specific coding in the 
sources to take advantage of the improvements, and since they are limited to 
int's, not many programs bother to include MMX optimizations.
The PIII, on the other hand, with it's SSE instructions, which provide MMX 
style optimizations for floats are much more useful, and XFree86 and DRI, for 
example have incuded optimizations for these.

Now my understanding of the standard build process is that when I run 
./configure in the root of the sources, it should notice that it's running on 
a i586 and set something in the make files to ensure that GCC optimizes for 
i586 when I run make. However, when I run file on a binary that I've build, I 
get: 
ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), not stripped 

Therefore, I can't help but think I'm missing something important to get the 
best optimizations for this box.

So, after all that ;-) what would be the best way to fully optimise this box, 
starting from a base install plus development stuff?

Should I re-build GlibC before compiling anything else? 
Are there any other libs I should re-build? 
Should I rebuild GCC as well? 
Do I need to specify special options to ./configure to get better 
optimizations?

Cheers,

	John Gay


-- 
To UNSUBSCRIBE, email to debian-user-request@lists.debian.org 
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org



Reply to: