[seanc@FreeBSD.org: Re: Performance tests I did with FreeBSD, Linux and PostgreSQL]
There's been some recent discussion on some of the FreeBSD mailing
lists about PostgreSQL and performance. FreeBSD uses 16K blocks for
its FS and it has been suggested that PostgreSQL on FreeBSD be
modified to use 16K blocks instead of 8K blocks. Are there any
adverse reactions or reasons to not do this for the upcoming 7.4
release?
'bout the only reason I could think of would be someone using FreeBSD,
but with their PGDATA dir on an ext2 partition. :-P
Early performance tests on my laptop suggest it's 8% faster when the
FS has 16K blocks (the default after FreeBSD 4.5-RELEASE). From my
tests loading a database:
With 8K blocks:
15.188u 3.404s 7:12.27 4.2% 209+340k 1251+0io 0pf+0w
14.867u 3.686s 7:32.54 4.0% 201+327k 1252+0io 0pf+0w
avg wall clock sec to complete: 442
With 16K blocks:
15.192u 3.312s 6:44.43 4.5% 198+322k 1253+0io 0pf+0w
15.120u 3.330s 6:51.43 4.4% 205+334k 1254+0io 0pf+0w
avg wall clock sec to complete: 407
I'll take the 35sec/8% speedup any day of the week and twice on
Sunday. Granted these tests were done on my laptop and were 100%
write. If someone wants to do some good read tests, I'd be interested
in those results to see if it's still 8% faster.. I imagine this'd
make seq scans cheaper on FreeBSD.
Comments? -sc
--
Sean Chittenden
Attachments:
patchtext/plain; charset=us-asciiDownload
Index: src/include/pg_config_manual.h
===================================================================
RCS file: /home/ncvs/pgsql/pgsql-server/src/include/pg_config_manual.h,v
retrieving revision 1.5
diff -u -r1.5 pg_config_manual.h
--- src/include/pg_config_manual.h 4 Aug 2003 00:43:29 -0000 1.5
+++ src/include/pg_config_manual.h 27 Aug 2003 17:40:12 -0000
@@ -23,7 +23,7 @@
*
* Changing BLCKSZ requires an initdb.
*/
-#define BLCKSZ 8192
+#define BLCKSZ 16384
/*
* RELSEG_SIZE is the maximum number of blocks allowed in one disk
On Wed, 27 Aug 2003, Sean Chittenden wrote:
FreeBSD uses 16K blocks for its FS...
Actually, FreeBSD can use 8K blocks as well. The reason for using 16K
blocks is not speeed, but to reduce filesystem overhead and, more
importantly, to allow larger cylinder groups. But for a database with
a lot of random access of small records, your caching will probably
do better if you use 8K filesystem blocks; you're like to be able to
effectively cache more data.
cjs
--
Curt Sampson <cjs@cynic.net> +81 90 7737 2974 http://www.NetBSD.org
Don't you know, in this new Dark Age, we're all light. --XTC