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: