Today I decided to benchmark MySQL 5 performance on FreeBSD 6.1-STABLE.
This server is a Dual Xeon 2.8GHz, 4GB of RAM and 2x73GB SCSI disks that
do 320MB/s
For all the tests, I restarted mysqld prior to starting the test,
waited for about 1 minute for it to settle down, and ran super smack.
For the consecutive runs, I executed super-smack right after the
previous run ended.
Switching from HTT to no HTT was achieved by
machdep.hyperthreading_allowed, and switching from/to libpthread/libthr
was done via libmap.conf.
System:
FreeBSD ?? 6.1-STABLE FreeBSD 6.1-STABLE #3: Mon Jul 3 03:10:35 UTC
2006 [EMAIL PROTECTED]:/usr/obj/usr/src/sys/DATABASE i386
Here are the results:
MySQL 5.0.22, built with BUILD_OPTIMIZED=yes and WITH_PROC_SCOPE_PTH=yes
=== 4BSD + libthr + HTT on ===
Run #1
connect: max=4ms min=1ms avg= 3ms from 10 clients
Query_type num_queries max_time min_time q_per_s
select_index 200000 0 0 20405.86
Run #2
connect: max=3ms min=1ms avg= 2ms from 10 clients
Query_type num_queries max_time min_time q_per_s
select_index 200000 0 0 20253.53
Run #3
connect: max=4ms min=2ms avg= 2ms from 10 clients
Query_type num_queries max_time min_time q_per_s
select_index 200000 0 0 20270.33
=== 4BSD + libthr + HTT off ===
Run #1
connect: max=5ms min=2ms avg= 3ms from 10 clients
Query_type num_queries max_time min_time q_per_s
select_index 200000 0 0 18253.60
Run #2
connect: max=6ms min=1ms avg= 3ms from 10 clients
Query_type num_queries max_time min_time q_per_s
select_index 200000 0 0 18350.27
Run #3
connect: max=4ms min=1ms avg= 2ms from 10 clients
Query_type num_queries max_time min_time q_per_s
select_index 200000 0 0 18529.71
=== 4BSD + libpthread + HTT on ===
Run #1:
connect: max=17ms min=2ms avg= 7ms from 10 clients
Query_type num_queries max_time min_time q_per_s
select_index 200000 5 0 3935.94
Run #2:
connect: max=18ms min=1ms avg= 8ms from 10 clients
Query_type num_queries max_time min_time q_per_s
select_index 200000 2 0 3919.89
Run #3:
connect: max=22ms min=1ms avg= 13ms from 10 clients
Query_type num_queries max_time min_time q_per_s
select_index 200000 2 0 3911.66
=== 4BSD + libpthread + HTT off ===
connect: max=12ms min=1ms avg= 5ms from 10 clients
Run #1:
Query_type num_queries max_time min_time q_per_s
select_index 200000 0 0 11193.40
Run #2:
connect: max=6ms min=4ms avg= 5ms from 10 clients
Query_type num_queries max_time min_time q_per_s
select_index 200000 0 0 11428.30
Run #3:
connect: max=7ms min=4ms avg= 5ms from 10 clients
Query_type num_queries max_time min_time q_per_s
select_index 200000 1 0 13714.02
=== ULE + libthr + HTT on ===
Run #1:
connect: max=2ms min=0ms avg= 0ms from 10 clients
Query_type num_queries max_time min_time q_per_s
select_index 200000 1 0 16179.09
Run #2:
connect: max=14ms min=0ms avg= 7ms from 10 clients
Query_type num_queries max_time min_time q_per_s
select_index 200000 0 0 17451.31
Run #3:
connect: max=5ms min=1ms avg= 3ms from 10 clients
Query_type num_queries max_time min_time q_per_s
select_index 200000 1 0 15787.02
=== ULE + libthr + HTT off ===
Run #1:
connect: max=6ms min=6ms avg= 6ms from 10 clients
Query_type num_queries max_time min_time q_per_s
select_index 200000 0 0 11588.19
Run #2:
connect: max=220ms min=2ms avg= 46ms from 10 clients
Query_type num_queries max_time min_time q_per_s
select_index 200000 0 0 10651.16
Run #3:
connect: max=10ms min=0ms avg= 5ms from 10 clients
Query_type num_queries max_time min_time q_per_s
select_index 200000 0 0 10158.63
=== ULE + libpthread + HTT on ===
Run #1:
connect: max=9ms min=1ms avg= 7ms from 10 clients
Query_type num_queries max_time min_time q_per_s
select_index 200000 2 0 5869.52
Run #2:
Query_type num_queries max_time min_time q_per_s
select_index 200000 2 0 5839.95
Run #3:
Query_type num_queries max_time min_time q_per_s
select_index 200000 2 0 5680.97
=== ULE + libpthread + HTT off ===
Run #1:
connect: max=10ms min=1ms avg= 8ms from 10 clients
Query_type num_queries max_time min_time q_per_s
select_index 200000 0 0 6111.21
Run #2:
connect: max=1597ms min=1ms avg= 177ms from 10 clients
Query_type num_queries max_time min_time q_per_s
select_index 200000 0 0 7225.26
Run #3:
connect: max=9ms min=1ms avg= 4ms from 10 clients
Query_type num_queries max_time min_time q_per_s
select_index 200000 1 0 8187.13
Conclusions: 4BSD performed much better than ULE.
libthr performs a lot better than libpthread. I'd risk
saying libpthread has issues!
Hyperthreading is sometimes benefitial. On the winning
combination (4BSD+libthr), it is benefitial. On some other combinations
(4BSD+libpthread), it seems to greatly impair performance.
_______________________________________________
freebsd-performance@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-performance
To unsubscribe, send any mail to "[EMAIL PROTECTED]"