FreeBSD MySQL still WAY slower than Linux
David Sze
dsze at distrust.net
Mon Jun 20 14:51:14 GMT 2005
At 04:59 PM 19/06/2005 +0100, Robert Watson wrote this to All:
>BTW, could you run 'file' on the Linux and FreeBSD MySQL binaries and
>confirm that they're both either 32-bit i386 binaries, or 64-bit amd64
>binaries?
I can no longer run tests on the machine because it's in production, but I
will be re-running the tests on a different machine in the next few days,
for reasons outlined below. They should both be amd64 binaries, I compiled
from ports for FreeBSD and installs the x86_64 RPM for CentOS.
>BTW, could you confirm that on 6.x, you're setting /etc/malloc.conf so
>that it's not scrubbing memory on free()? In particular:
>
> ln -s jz /etc/malloc.conf
>
>as root. Most 6.x debugging features are set as part of the kernel
>configuration, and your performance results suggest that you've caught
>them all already, I think, but this one is user space. Also, make sure
>you are compiling without INVARIANT_SUPPORT -- for packet send tests, I
>find that even without INVARIANTS, I see a 4% hit for having
>INVARIANT_SUPPORT in the kernel.
I was using "ln -s aj /etc/malloc.conf" because I read somewhere that AJ
were the only debugging options enabled in -CURRENT. I'll use "ajz" for
the next set of tests.
I had everything in the "Debugging for use in -current" section in GENERIC
"nooptions"ed in my kernel config file, so INVARIANT_SUPPORT was gone.
The reason I'm re-running the tests is due to things pointed out by various
people last week. In particular:
- ufs+soft_updates and ext3 are both async, but they guarantee
consistency. So mounting the ext3 partition as sync and comparing it to
ufs+soft_updates was meaningless.
- Consistency guarantees are useless for databases because they have pretty
much zero filesystem meta data updates.
- MyISAM has no data durability guarantees, so using it on an async file
system like ufs+soft_updates or ext3 is also meaningless (at least for my
application, where writes are more common than reads, and durability is
important). You can get durability with MyISAM by mounting sync, but write
performance is horrible.
- InnoDB has durability guarantees on an async filesystem (it uses one of
fdatasync/fsync/O_SYNC/etc. at the appropriate times), so the results of
the update-select super-smack benchmark look a lot different.
I'll be re-running super-smack against an InnoDB table. Any additional
requests for configurations to test, or other tweaking suggestions?
This is what I'll be trying:
FreeBSD/amd64 4.11-RELEASE, linuxthreads
FreeBSD/amd64 5.4-RELEASE, libpthread
FreeBSD/amd64 5.4-RELEASE, libpthread, process scope
FreeBSD/amd64 6.0-CURRENT, libpthread
FreeBSD/amd64 6.0-CURRENT, libpthread, process scope
FreeBSD/amd64 6.0-CURRENT, libthr, system scope
FreeBSD/amd64 6.0-CURRENT, libthr, process scope
CentOS/amd64 4.0
The different threading libraries are more for completeness. In my last
test I saw <10% difference between them on amd64.
More information about the freebsd-performance
mailing list