Thread: WAL performance with wal_sync_method = open_sync

WAL performance with wal_sync_method = open_sync

From
Tatsuo Ishii
Date:
Hi,

I'm playing with wal parameters and found that wal_sync_method =
open_sync enormously enhance the performance on my machine. Without it
(using default fsync) I got only 90 tps at the best using pgbench (-s
2). However if I set wal_sync_method = open_sync, I get ~200 tps. I
have checked PostgreSQL uses O_SYNC flag when it opens WAL log files
using strace. Can anybody tell me why? I am afraid this is just a
dream:-) Linux kernel 2.2.17.
--
Tatsuo Ishii


Re: WAL performance with wal_sync_method = open_sync

From
Tom Lane
Date:
Tatsuo Ishii <t-ishii@sra.co.jp> writes:
> I'm playing with wal parameters and found that wal_sync_method =
> open_sync enormously enhance the performance on my machine. Without it
> (using default fsync) I got only 90 tps at the best using pgbench (-s
> 2). However if I set wal_sync_method = open_sync, I get ~200 tps.

Wouldn't surprise me.  The performance of the fsync method sucks on
my system (HPUX 10.20) as well.  AFAICT HPUX and Linux 2.2.x are not
very smart about fsync on large files --- they scan all the kernel
disk buffers for the target file to find the dirty ones.  O_SYNC
avoids this scanning.

I hear Linux 2.4.* is smarter about doing fsync, so it probably has
fsync as fast or faster than O_SYNC.
        regards, tom lane