I’m continuing my experiments with different OS and today I tested FreeBSD 6.0 on my box.
(more details about box and benchmark see here https://www.percona.com/blog/2006/06/13/quick-look-at-ubuntu-606/).
Initially I was very pessimistic about FreeBSD, as results were (in transactions/sec, more is better.
for comparison the results from Suse 10.0):
InnoDB | |||
threads | FreeBSD 6 | Suse 10.0 | Suse/ FreeBSD ratio |
1 | 436.97 | 536.91 | 1.23 |
4 | 322.08 | 816.27 | 2.53 |
16 | 519.94 | 639.05 | 1.23 |
64 | crash | 547.07 | |
256 | 357.09 | ||
MyISAM | |||
threads | FreeBSD 6 | Suse 10.0 | Suse/ FreeBSD ratio |
1 | 335.56 | 429.89 | 1.28 |
4 | 165.16 | 863.23 | 5.23 |
16 | 322.66 | 537.67 | 1.67 |
64 | crash | 516.00 | |
256 | 346.65 |
The crash with many threads in FreeBSD is known problem and is not MySQL fault. More info is available in FreeBSD bug report
I’m not big expert in FreeBSD and did not saw http://wikitest.freebsd.org/MySQL before. This page recommends to use libthr instead of libthreads.
The results with libthr looks better:
InnoDB | |||
threads | FreeBSD 6 | Suse 10.0 | Suse/ FreeBSD ratio |
1 | 483.22 | 536.91 | 1.11 |
4 | 852.21 | 816.27 | 0.96 |
16 | 748.89 | 639.05 | 0.85 |
64 | 644.45 | 547.07 | 0.85 |
256 | 273.99 | 357.09 | 1.30 |
MyISAM | |||
threads | FreeBSD 6 | Suse 10.0 | Suse/ FreeBSD ratio |
1 | 344.72 | 429.89 | 1.25 |
4 | 531.6 | 863.23 | 1.62 |
16 | 494.19 | 537.67 | 1.09 |
64 | 451.72 | 516.00 | 1.14 |
256 | 215.84 | 346.65 | 1.61 |
Interesting thing with 4-64 threads FreeBSD is better than Suse in InnoDB benchmark. I think it is related to InnoDB’s implementation of syncronious primitives. For MyISAM Suse is stable better.
Configuration params:
Box: Dual Core Athlon 3800+, 1Gb of RAM, Motherboard ASUS A8N-E
MySQL 5.0.22
params for InnoDB:
–innodb-buffer-pool-size=500M –max-connections=500
params for MyISAM:
–key-buffer-size=500M –max-connections=500 –skip-innodb
Suse 10.0:
kernel-smp-2.6.13-15.x86_64
NTPL
Schedulers comparsion.
By request I made tests with 4BSD scheduler:
InnoDB | |||
threads | FreeBSD 6 ULE | FreeBSD 6 4BSD | 4BSD / ULE |
1 | 483.22 | 438.1 | 0.91 |
4 | 852.21 | 819.14 | 0.96 |
16 | 748.89 | 712.77 | 0.95 |
64 | 644.45 | 639.2 | 0.99 |
256 | 273.99 | 330.11 | 1.20 |
MyISAM | |||
threads | FreeBSD 6 ULE | FreeBSD 6 4BSD | 4BSD / ULE |
1 | 344.72 | 324.9 | 0.94 |
4 | 531.6 | 518.96 | 0.98 |
16 | 494.19 | 476.57 | 0.96 |
64 | 451.72 | 444.77 | 0.98 |
256 | 215.84 | 258.42 | 1.20 |
Interesting with 256 threads BSD scheduler looks better.