ZFS sub-optimal performance with default setting
Ronald Klop
ronald-freebsd8 at klop.yi.org
Wed Jan 9 15:00:05 UTC 2013
On Wed, 09 Jan 2013 15:31:19 +0100, Patrick Dung
<patrick_dkt at yahoo.com.hk> wrote:
> Hi freebsd-fs!
>
> I have my the original question in:
> http://archives.postgresql.org/pgsql-performance/2013-01/msg00044.php
> But later it was found out the bottleneck seems to be the ZFS with out a
> fast ZIL.
> Please give some advise, thanks.
>
> Details:
>
> Postgresql 9.2.2 (complied by gcc) is installed in FreeBSD 9.1 i386.
> The pgsql base directory is in a ZFS dataset.
>
> I have noticed the performance is sub-optimal, but I know the default
> setting should be the most safest one to be use (concern about data
> integrity).
>
> a) I use OTRS ticketing system version 3.1, the backend is PostgreSQL.
> The user interactive response is not slow (switching web pages or create
> a change).
>
> b) There is a benchmark in the support module of OTRS.
> It tested insert,update,select and delete performance.
> The response time is slow (>10 sec), except select.
>
> I have done some research on web, with below settings (just one change,
> not both), the performance returned to normal:
>
> 1) Disabled sync in the pgsql dataset in ZFS
> zfs set sync=disabled mydata/pgsql
> or
> 2) In
> postgresql.conf, set synchronous_commit from on to off
>
> I know the above setting would lead to data loss (e.g.power goes off),
> any comments?
>
> PS:
> 1) I have tried to use primarycache/secondarycache=metadata/none, it do
> not seem to help.
>
> 2)
> I have tried the default setting on Linux too:
> RHEL 6.3, ext4, stock postgresql 8.x, OTRS 3.1.
> The web site is responsive and the benchmark result is more or less the
> same as FreeBSD with the 'sync' turned off.
>
> 3)
> For FreeBSD, same setting with Postgresql on UFS:
> The performance is between ZFS (default, sync enabled) and ZFS (sync
> disabled).
>
> Thanks,
> Patrick
As you might have read on the internet ZFS does some kind of journaling
and postgresql also.
Postgresql expects the FS to not do the journaling (because it also works
on ext2, ffs, etc.) so you can disable it for ZFS and postgresql will make
sure the data is consistent.
Ronald.
More information about the freebsd-fs
mailing list