On Sun, 7 May 2006, Sven Petai wrote:
I performed tests on a 4 * dualcore 2Ghz opteron system (so 8 cores in
total).
In general with 10 parallel smacker threads the performance seems to go up
with your patch by ~44% and with 100 parallel threads it goes down ~25%
This is an interesting effect I need to explore. Kris reported much increased
contention on locks within the process (between threads) when running with my
patch. It would be interesting to know what the effect on average query time
is -- perhaps it has gone down and we're looking at increased scheduler
related contention.
I noticed the results in the tests seem somewhat variable. I've noticed that
MySQL bennchmarking is heavily affected by test run time and order. It's not
atypical when running a series of identical tests to see a first result half
the end rate, a second result *better* than the end rate, and then it balance
out between the two. For example, I see the following on a dual Xeon:
orangutan# foreach i (`jot 12`)
super-smack /usr/share/smacks/select-key.smack 2 1000 | grep index | awk -F' '
'{print $5}'
end
foreach? super-smack /usr/share/smacks/select-key.smack 2 1000 | grep index |
awk -F' ' '{print $5}'
end
foreach? end
4253.60
8685.55
8324.28
8680.88
8321.53
8391.27
8557.10
8034.79
7532.90
8196.65
7931.77
7981.55
This is quite usual, and is sometimes more pronounced. I'm not surprised the
first run is slower while things get going, binaries are pulled off disk, code
enters the cache, etc. What surprises me is how it bumps up higher
initialially, then goes down to balance at a somewhat lower rate.
Anyhow, what I'm getting at is this: make sure when you measure MySQL
performance, you do a series of runs, discard the first few, and then take an
average of the remainder, and watch out for outliers.
Robert N M Watson
Here's a graph of select smack performance with your patch:
http://bsd.ee/~hadara/debug/mysql4/freebsd_current_06.02.2006_uds_patch/ULE_+_pthread_vs._thr.png
Server crashed before I managed to get enough data to plot graphs
comparing pre-patch and patched performance.
I'll try to generate that and another one, comparing the performance against
linux on the same hardware, tomorrow.
But below you can find some pre and after patch data that should
give some idea of how the patch has impacted performance.
Various test data, benchmarking scripts I used etc. can be found @
http://bsd.ee/~hadara/debug/mysql4/
I have included nice value of mysqld in the tests, because I have found that
the impact of giving mysqld higher priority can have dramatic effects,
especially under 6.X.
This happens probably because super-smack with its 100 procs would
otherwise get scheduling advantage over mysqld with 100 threads.
Hardware:
motherboard: Thunder K8QSD Pro
hdd: scsi seagate cheetah 10K7
ram: 8 * 3200 CL3 kingston ECC 1G
cpu: 4 * opteron 870 (2Ghz dualcore)
Environment:
mysql:
ver: 4.1.18_2 from the ports
table type: MyISAM
config: my-huge.cnf with disabled bin-log and max-connections bumped to 400
database located on a slice mounted with softupdates
super-smack:
ver: from the ports
smacks: default select and update
All tests were run 2 times and mean value was used, unless stated otherwise.
==== FreeBSD current (06.05.2006) ====
scheduler: 4BSD
thr_lib nice queries threads update select
pthread 0 10000 100 3280 8253
pthread 0 100000 10 5037 19972
thr 0 10000 100 4470 20317
thr 0 100000 10 6341 20353
thr -10 10000 100 4457 20530
thr -10 100000 10 6318 21240
scheduler: ULE
thr_lib nice queries threads update select
pthread 0 10000 100 3640 8413
pthread 0 100000 10 5269 21248
thr 0 10000 100 4422 16299*
thr 0 100000 10 6400 22068
thr -10 10000 100 4400 21154
thr -10 100000 10 6211 21877
* - mean over 5 runs since results were rather unstable:
14088.81, 17629.83, 21210.02, 14173.42, 14395.31
==== FreeBSD current (06.05.2006) + uds locking patch ====
scheduler: 4BSD
thr_lib nice queries threads update select
pthread 0 10000 100 3410 8237
pthread 0 100000 10 5150 19786
thr 0 10000 100 4559 14992
thr 0 100000 10 6422 29371
thr -10 10000 100 4535 12589
thr -10 100000 10 6446 30300
scheduler: ULE
thr_lib nice queries threads update select
pthread 0 10000 100 3455 8062
---- lost contact with machine ----
results with various threadcounts at 10000 queries
is available though @
http://bsd.ee/~hadara/debug/mysql4/freebsd_current_06.02.2006_uds_patch/smack_results_ULE.txt
==== FreeBSD 6.1 RC2 ====
scheduler: 4BSD
thr_lib socket nice queries threads update select
pthread unix 0 10000 100 2609 6683
pthread unix 0 100000 10 3752 15052
thr unix 0 10000 100 4802 11496
thr unix 0 100000 10 6398 20738
thr unix -10 10000 100 4607 21066
thr unix -10 100000 10 6379 21411
thr tcp -10 10000 100 4335 9952
scheduler: ULE
thr_lib socket nice queries threads update select
thr unix 0 10000 100 4779 13724
thr unix 0 100000 10 6473 25172
thr unix -10 10000 100 4969 20662
thr unix -10 100000 10 6418 25204
==== Linux ====
suse - suse enterprise linux 9 with kernel 2.6.5-7.97-smp, mysql
4.0.18-32.1, reiserfs
fedora - fedora core with kernel 2.6.9-22-ELsmp, mysql 4.1.12, ext3
distro queries threads update select
suse 10000 100 10047* 76857
fedora 10000 100 8072* 67000
* - on linux the bin-log option was not disabled in the mysql
config, so it would probably have gotten even higher update smack scores
if I had disabled it like I did on freebsd
_______________________________________________
freebsd-performance@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-performance
To unsubscribe, send any mail to "[EMAIL PROTECTED]"