Gentoo Archives: gentoo-performance

From: Javier Villavicencio <jvillavicencio@×××××××××.ar>
To: gentoo-user@l.g.o, gentoo-performance@l.g.o
Subject: [gentoo-performance] Implementing Optimization for Database Server - Nice story btw :+P
Date: Fri, 26 Nov 2004 04:52:50
First trying to revive the "benchmark these CFLAGS in a real-app with nice -n 
-20" idea i had writing on this thread [1], and second showing some success on 
my work and looking "not to do the same thing that someone else maybe already 
did...", I'm posting this "experience" and a little question.

I where working with linux in various places over the time but all of those 
"places" had policies and stuff about what kind of linux distribution they'll 
use (or not use at all) so the only thing I could do with gentoo was "I use it 
only on my machine". But now, I work in a complete mess of an extremely bad 
directed "gouvernamental institution", one of those that makes use of 
-INTENSIVE- processing power, but, looking for the minimal-lowest-nonexistent 

Sounds funny, right? :+)

Well here is when gentoo makes my life easier:
The "guy before me" was a fan of OpenBSD which I respect and still use as our 
"internet" firewalls, but it really lacks of the support that everyone else 
needed at work. A little example of this: They where working with databases in 
"a couple" of RDBMSs: Gupta/Centura SQLBase, Oracle, Interbase, among others. 
So... "how in the hell i can make a apache+mysql+php-THING work with these 
databases on OBSD". just "no way" so before starting the real "web services" 
they asked me to prove myself "migrating" some "non-cost-effective" M$ services, 
as I did:

The hardware they have are some Fujistu-Siemens Primergy P470 servers, with 
duals PentiumII or PentiumIII with no more than 500Mhz the P3 and 450Mhz the P2, 
if I wanted 1Gb of ram they had this but wasn't necessary, and the only good 
thing i liked about these where the hot-pluggable backplanes with Mylex DAC960 
and DAC1100 SCSI-2 Raid controllers.

So I took my livecd and migrated 2 M$ systems and an old redhat: First was the 
"internet S and A" server (ISA :+P) to squid->winbind/samba->w2kdomaingroups. 
Then was the mailserver, which was a qmail installed from some sort of strange 
script that downloads and compiles and installs and configured all by himself 
without asking a sh*t, which had more than 3000 viruses incoming per week, now 
it's a postfix+mysql+amavis+clamav+dspam solution made by myself (of course 
following TONS of howtos :+P). And the last one was the webserver itself, which 
was an "it need to be restarted every 4 hours" win2k with apache and php,and now 
it can access ANY database that have an ODBC driver even in WINDOWS (using a 
DBTCP proxy in a win2k machine google it, it's cool, i also patched the php 
module to compile and added a pear module to access it from Pear DB.php ;+) from 
php using apache and accessing oracle 8.1.7 and oracle

So far, I didn't needed "great" optimization. CFLAGS like "-O2 -march=pentium3/2 
-frename-registers -fomit-frame-pointers -pipe" did the magic very well.

But now "the time has come" X'D

I, now, have to make -THE- database server.

I already started it, but with -extra-safe-cflags-and-package-versions-, because 
it should run Oracle and you can find a lot of "troubles" rather than 
"solutions" in non-certified (and in certified too btw) distributions where to 
run oracle.

Now after 3 weeks of recovering dead disks, going for the S40 storage, and 
compiling/downloading/installing everything to the tiniest detail....
it's working...

This is what I've got:

The computer have two PentiumIII 500Mhz with 1Gb of ECC RAM, and a total of 14 
SCSI-2 hard disks (yes 14), 2 of them (9Gb each) in a raid1 (mirror) 
configuration for the booting system (gentoo ;+) with reiserfs on a DAC960PRL 
The other 12 are configured in this way: since the DAC1100 that connects the 
server to the storage cannot handle in a single array pack more than 8 disks 
this storage has 2 RAID5 configurations one made of 8 9Gb disks and the other 
made of 4 18Gb disks, which I combined in three different "partitions" using 
software raid0 (stripping) with a total of (around) 110Gb, divided into 
60Gb/30Gb/20Gb (oracle users my guess this u01/u02/u03 :+) that holds the big 
swap partition (2Gb outside the softraid) and, of course, will hold the 
database. Since this is going to handle "big" files, it has XFS tuned 
accordingly with Daniel Robbins suggestions ;+).

Now, regarding the original subject, I'm thinking about doing an emerge -e world 
with new cflags, check if it breaks anything, if it works faster, if I can 
extract all the juice this machines have, so I'm about to start "benchmarking"

But, taking in mind the -fact- that this wont recompile the oracle stuff (and 
oracle doesn't compile anything on your machine, it just "links" stuff) I was 
thinking about "forcing" some cflags to the glibc itself and other libs that may 
oracle use that can be optimized "the gentoo way".

After this, I'm asking before I start this "adventure" X'D, if anyone, anybody 
did something similar before, results, advices, CFLAGS!!!, even ~x86 stuff like 
gcc3.4 if it doesn't break oracle ;+), kernel schedulers (staircase?, cfq?, and 
io: anticipatory?, deadline?), kernel patches, anything (ideas, insults, flames 
X'D) can be of help and will be appreciated.

(I may add that this is a sort of "competition" between me and the DBA, that 
says: "the server must be a redhat 8, since oracle has certified it" and I say: 
"the server must be tested first with gentoo since it will run faster and we 
need speed on that old machines we have, and if it works solid, make the 
switch"... So this will be (in the end) a benchmark with a title like this 
"Indestructible Redhat-Oracle" vs "Fast-Bleeding-Edge Gentoo-Oracle".)

So, I hope the enthusiasm from all the gentoo users can help me win this little 
battle ;+)

Thanks a lot for reading all of this, I know is very large, but I thought it 
would be nice to make it known that gentoo is growing in scales like this :+)



gentoo-performance@g.o mailing list