Performance!

Kris Kennaway kris at FreeBSD.org
Wed Jan 2 16:20:33 PST 2008


Kris Kennaway wrote:
> Krassimir Slavchev wrote:
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>>
>> Kris Kennaway wrote:
>>> Krassimir Slavchev wrote:
>>> Hello,
>>>
>>> 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.
>>>
>>> dmesg:
>>> ...
>>> CPU: Intel(R) Xeon(R) CPU           X5450  @ 3.00GHz (3000.02-MHz
>>> K8-class CPU)
>>>   Origin = "GenuineIntel"  Id = 0x10676  Stepping = 6
>>>
>>> Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE> 
>>>
>>>
>>>
>>> Features2=0xce3bd<SSE3,RSVD2,MON,DS_CPL,VMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,DCA,<b19>> 
>>>
>>>
>>>   AMD Features=0x20000800<SYSCALL,LM>
>>>   AMD Features2=0x1<LAHF>
>>>   Cores per package: 4
>>> usable memory = 8575655936 (8178 MB)
>>> avail memory  = 8288337920 (7904 MB)
>>> ACPI APIC Table: <HP     ProLiant>
>>> FreeBSD/SMP: Multiprocessor System Detected: 8 CPUs
>>> ...
>>>
>>> test:
>>> sysbench --num-threads=${i} --test=oltp --pgsql-user=bench
>>> --pgsql-db=bench --db-driver=pgsql --max-time=60 --max-requests=0
>>> --oltp-read-only=on run
>>>
>>> tuning:
>>> kern.ipc.shmmax=2147483647
>>> kern.ipc.shmall=524288
>>> kern.ipc.semmsl=512
>>> kern.ipc.semmap=256
>>> kern.ipc.somaxconn=2048
>>> kern.maxfiles=65536
>>> vfs.read_max=32
>>>
>>> kern.ipc.semmni=256
>>> kern.ipc.semmns=2048
>>>
>>> results:
>>> FreeBSD 7.0-BETA4 amd64 (cvsup on 20.12) GENERIC with SCHED_ULE
>>> #threads        #transactions/sec       user/system
>>> 1               500                     7.4%,5.3%
>>> 5               1990                    30.9%,23.4%
>>> 10              2510                    39.9%,35.0%
>>> 20              2549                    44.5%,43.5%
>>> 40              1921                    29.8%,59.4%
>>> 60              1580                    22.7%,70.6%
>>> 80              1341                    18.9%,75.9%
>>> 100             1227                    16.5%,79.3%
>>>
>>> Linux
>>> #threads        #transactions/sec
>>> 1               693
>>> 5               3539
>>> 10              5789
>>> 20              5791
>>> 40              5661
>>> 60              5517
>>> 80              5401
>>> 100             5319
>>>
>>>
>>> What can be done to improve these results?
>>>
>>> Best Regards
>>>
>> _______________________________________________
>> freebsd-stable at freebsd.org mailing list
>> http://lists.freebsd.org/mailman/listinfo/freebsd-stable
>> To unsubscribe, send any mail to "freebsd-stable-unsubscribe at freebsd.org"
>> .
>>
>>> postgresql has some poor default settings on FreeBSD.  You need to add:
>>
>>> stats_command_string = off
>>> update_process_title = off
>>
>>> Kris
>>
>> I use a copy of postgresql.conf file from linux.
>> Only 'stats_command_string = on' was commented.
>> Here are results with these settings and lock_manager patch:
>>
>> #threads        #transactions/sec
>> 1               582
>> 5               2154
>> 10              2253
>> 20              2705
>> 40              2215
>> 60              1713
>> 80              1574
>> 100             1256
> 
> Please enable LOCK_PROFILING in your kernel and then do
> 
> sysctl debug.lock.prof.enable=1
> <run the test with 8 threads>
> sysctl debug.lock.prof.enable=0
> 
> and send me the output of
> 
> sysctl debug.lock.prof.stats
> 
> Kris
> 

Are you using postgresql 8.1 or older?  It didn't have the 
update_process_title option to disable the setproctitle() calls that 
have a large performance penalty on FreeBSD.  Try with 8.2 or hack the 
source to disable it.

Kris


More information about the freebsd-stable mailing list