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