Re: We really ought to do something about O_DIRECT and data=journalled on ext4

Steve Singer <ssinger@ca.afilias.info>

From: Steve Singer <ssinger@ca.afilias.info>
To: Josh Berkus <josh@agliodbs.com>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2010-12-07T18:16:57Z
Lists: pgsql-hackers
On 10-12-06 09:00 PM, Josh Berkus wrote:
> Steve,
>
>> If you tell me which options to pgbench and which .conf file settings
>> you'd like to see I can probably arrange to run some tests on AIX.
>
> Compile and run test_fsync in PGSRC/src/tools/fsync.
>

Attached are runs against two different disk sub-systems from a server 
running AIX 5.3.

The first one is against the local disks


Loops = 10000

Simple write:
         8k write                      60812.454/second

Compare file sync methods using one write:
         open_datasync 8k write          162.160/second
         open_sync 8k write              158.472/second
         8k write, fdatasync             158.157/second
         8k write, fsync                  45.382/second

Compare file sync methods using two writes:
         2 open_datasync 8k writes        79.472/second
         2 open_sync 8k writes            80.095/second
         8k write, 8k write, fdatasync   159.268/second
         8k write, 8k write, fsync        44.725/second

Compare open_sync with different sizes:
         open_sync 16k write             162.017/second
         2 open_sync 8k writes            79.709/second

Test if fsync on non-write file descriptor is honored:
(If the times are similar, fsync() can sync data written
on a different descriptor.)
         8k write, fsync, close           45.361/second
         8k write, close, fsync           36.311/second



================================

The below profile is from the same machine using an IBM DS 6800 SAN for 
storage.


Loops = 10000

Simple write:
         8k write                      75933.027/second

Compare file sync methods using one write:
         open_datasync 8k write         2762.801/second
         open_sync 8k write             2453.822/second
         8k write, fdatasync            2867.331/second
         8k write, fsync                1094.048/second

Compare file sync methods using two writes:
         2 open_datasync 8k writes      1287.845/second
         2 open_sync 8k writes          1332.084/second
         8k write, 8k write, fdatasync  1966.411/second
         8k write, 8k write, fsync      1048.354/second

Compare open_sync with different sizes:
         open_sync 16k write            2281.425/second
         2 open_sync 8k writes          1401.561/second

Test if fsync on non-write file descriptor is honored:
(If the times are similar, fsync() can sync data written
on a different descriptor.)
         8k write, fsync, close         1298.404/second
         8k write, close, fsync         1188.582/second