Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 27 Aug 2003 10:44:48 -0700
From:      Sean Chittenden <seanc@FreeBSD.org>
To:        Robert Watson <rwatson@FreeBSD.ORG>
Cc:        Bill Moran <wmoran@potentialtech.com>
Subject:   Re: Performance tests I did with FreeBSD, Linux and PostgreSQL
Message-ID:  <20030827174448.GB72378@perrin.nxad.com>
In-Reply-To: <Pine.NEB.3.96L.1030827132737.25213L-100000@fledge.watson.org>
References:  <20030827060644.GA9321@HAL9000.homeunix.com> <Pine.NEB.3.96L.1030827132737.25213L-100000@fledge.watson.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--envbJBWh7q8WU6mo
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

> > > Like all benchmarks, I doubt these are perfect (or even close)
> > > examples of real-world use.
> > > 
> > > However, in the hopes that they will be useful for improving FreeBSD, I
> > > present them to the community.
> > > 
> > > http://www.potentialtech.com/wmoran/postgresql.php
> > > 
> > > Intelligent comments are welcome.
> > 
> > Well, a little trussing revealed that pgsql uses a block size of
> > 8K, which can be a significant pessimization when the filesystem
> > block size is 16K, which is the default in FreeBSD!  ext2fs uses
> > 4K blocks and reiserfs uses extents, so those filesystems would
> > not suffer from that problem.  You might consider trying your test
> > on a UFS filesystem with 8K blocks, or you could tune pgsql to use
> > a different block size.  (For pgsql, I think the appropriate
> > tunable is BLCKSZ in include/pg_config.h.  You'll have to
> > recompile it and create a new database.)
> 
> I wonder if it would benefit us to do some tweaks to Postgres to
> tune the pgsql block size to the file system it's running on, and
> get it integrated back into the distribution....  As disks get
> bigger, a 16k block size is going to become more common, so this
> won't just hit FreeBSD, I expect.

Hrm, that sounds like a good idea to me.  The appropriate patch is
included (src/include/pg_config_manual.h).  I'll bounce this by the
PostgreSQL guys to see what their reaction is, but I'm inclined to
include this patch in the postgresql-devel port for now, and if things
go well there, possibly in the main postgresql7 port (pending
feedback).  I haven't ever played with this setting before and would
welcome feedback from anyone who has (rergardless of their
results). -sc

PS You have to re-initdb/reload your data after applying this patch
   because the size of data on disk has changed.

-- 
Sean Chittenden

--envbJBWh7q8WU6mo
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename=patch

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

--envbJBWh7q8WU6mo--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030827174448.GB72378>