Date: Thu, 03 Jan 2008 01:20:33 +0100 From: Kris Kennaway <kris@FreeBSD.org> To: Kris Kennaway <kris@FreeBSD.org> Cc: FreeBSD <freebsd-stable@freebsd.org> Subject: Re: Performance! Message-ID: <477C2A51.1050401@FreeBSD.org> In-Reply-To: <477C1FA3.2070904@FreeBSD.org> References: <476A5EE1.9000003@bulinfo.net> <476FF662.6050604@FreeBSD.org> <477BB7C0.3060603@bulinfo.net> <477C1FA3.2070904@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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@freebsd.org mailing list >> http://lists.freebsd.org/mailman/listinfo/freebsd-stable >> To unsubscribe, send any mail to "freebsd-stable-unsubscribe@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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?477C2A51.1050401>