Wednesday, May 27, 2009

MySQL 5.4 testing - Failure and a W/O

I had this idea around 5.4. It is meant to scale better on multi-core machines compared to, say, standard 5.1. This has been proven also it seems. 5.4 is still in Beta, but testing has shown that scalability is definitively better.

What I wanted to know was how well 5.4 would work on a lower spec box compared to 5.1. One reason for me wanting to test this is that I am currently in my summer house, and I have no multi-core 64-bit machines around. All I have in terms of Linux boxes is an old Dell Laptop with Gentoo on it, all this will as similar setup as possible between 5.1 and 5.4.

So, I download 5.4 sources, as there are no 32-bit Linux binaries yet, and I do a simple configure and make. And.. I fail. Out of the box, some of the inline optimizations in innodb (the config I built with was max-no-ndb) will screw up gcc when using -O3 optimization (OK, I admit, I'm not 100% sure that this is the cause, but it sure looks like it, and some googling seems to confirm it, but I'm not a compiler engineer, so who knows).

So today, when I was planning to do some benchmarking and some other fun things, I tried to track this one down, and I did find a W/O for this issue, which is to configure with CFLAGS=-O2, i.e.:
./configure --with-plugins=max-no-ndb CFLAGS="-O2"
This will actually do the trick. And once I figured that out, I had to report it as a bug (#45131) and try with a few different compilers.

I did an emerge on gcc for my gentoo, and got gcc 4.1.2 instead of 4.1.1, and had the same problem. I also tested on another box running SuSE and gcc 3.3.1, and with the same problem. But as I said, at least there is a fix.

Tomorrow, I might do the actual low-end 32-bit machine performance test, I'll keep you posted.



Mikael Ronstrom said...

Weird that you get this problem. I also came across this problem in some pushbuilds so disabled inlining on 32-bit gcc since there was some issue with this (also a similar problem on Mac OS X).

Karlsson said...

Also note that this was on several platforms, who machines (both 32-bit x86) and three versions of gcc.

Karlsson said...

This bug is now confirmed as a real bug. It was actually a bug in the code it seems: 45131

Mikael Ronstrom said...

It turns out that the fixes I did was only disabling the 32-bit gcc inlining on Mac OS X and Solaris. As you showed it was a problem with 32-bit inlining in general. But as showed this was due to a bug in the atomics code, so with that code fixed I can also remove the disabling of inlining of 32-bit on Mac OS X and Solaris. Great, thx for blogging about this and filing a bug.

ariyan arifin said...

You see to bethink that applying for an already is not troublesome, but rather it is in like way not that sensible. One of the key automated amusing breach you see to acceptance is your pay. Appropriate on time of you complete an application, you see to ensure that you see a adjustment with ages to ages pay. car title loans chicago