Performance! [SOLVED]
Kris Kennaway
kris at FreeBSD.org
Fri Jan 11 09:15:11 PST 2008
Krassimir Slavchev wrote:
>>
>> I have read all related threads about performance problems with multi
>> core systems but still have no idea what to do to make thinks better.
>> Below are results of testing postgresql on HP DL380G5 using sysbench.
>> The results are comparable to:
>> http://blog.insidesystems.net/articles/2007/04/11/postgresql-scaling-on-6-2-and-7-0
>>
>> but the same tests running on the same hardware using Linux (kernel
>> 2.6.18-53.1.4.el5 SMP x86_64) are very different.
>> PostgreSQL is tuned equal.
Just to summarize some discussion we had off-list, this problem is now
resolved. It turned out to have two causes:
1) sysbench on linux was defaulting to using a unix domain socket to
communicate with pgsql, but FreeBSD was using TCP to 127.0.0.1. TCP has
much more overhead so performance was lower. Using --pgsql-host="" in
sysbench is the fix for this.
2) pgsql was not compiled with thread support enabled, which caused lots
of bad interactions with the threaded sysbench client. This probably
would have caused data corruption too (silent in this case because
nothing was checking the query responses). The fix was to recompile the
pgsql client and server with the THREADSAFE option enabled.
Krassimir reports that with these two fixes, the standard 7.0 kernel has
performance:
#threads transactions/sec
1 755
8 7129
40 6580
100 6768
compared to Linux:
Linux (2.6.18)
#threads #transactions/sec
1 693
5 3539
10 5789
20 5791
40 5661
60 5517
80 5401
100 5319
Linux (2.6.23)
#threads #transactions/sec
1 740
5 2675
10 6486
20 6893
40 6623
60 6623
80 6522
100 6417
I think this is a satisfactory resolution :)
Kris
More information about the freebsd-stable
mailing list