Some more information on fsync using the test_fsync tool in
postgres/src/tools:

System is Snow Leopard 10.6.2 (64 bit).  Volumes are HFS+ formatted.

PASS 1 - DATABASE VOLUME (SSD RAID 0)
===================================
$ sudo ./test_fsync -f /Volumes/SSD/fsync_test.out
Simple write timing:
    write                    0.127178

Compare fsync times on write() and non-write() descriptor:
If the times are similar, fsync() can sync data written
on a different descriptor.
    write, fsync, close      0.254609
    write, close, fsync      0.316973

Compare one o_sync write to two:
    one 16k o_sync write     0.260829
    two 8k o_sync writes     0.259231

Compare file sync methods with one 8k write:
    open o_dsync, write      0.135035
    open o_sync, write       0.128056
    write, fdatasync         0.154622
    write, fsync             0.154496

Compare file sync methods with two 8k writes:
    open o_dsync, write      0.260390
    open o_sync, write       0.426376
    write, fdatasync         0.382204
    write, fsync             0.249774

PASS 2 - SATA HDD (7200 rpm)
=========================
$ sudo ./test_fsync -f /Volumes/Work/fsync_test.out
Simple write timing:
    write                    0.205038

Compare fsync times on write() and non-write() descriptor:
If the times are similar, fsync() can sync data written
on a different descriptor.
    write, fsync, close      0.498885
    write, close, fsync      0.383176

Compare one o_sync write to two:
    one 16k o_sync write     0.237621
    two 8k o_sync writes     0.458676

Compare file sync methods with one 8k write:
    open o_dsync, write      0.171746
    open o_sync, write       0.195227
    write, fdatasync         0.195102
    write, fsync             0.218675

Compare file sync methods with two 8k writes:
    open o_dsync, write      0.345076
    open o_sync, write       0.368541
    write, fdatasync         0.254322
    write, fsync             0.271039

If the tests are repeated, the numbers are not very stable, but generally in
the range 0.18 to 0.48.

The times are apparently in milliseconds.  But that doesn't make any sense
for the 7200rpm SATA HDD, given it has an 8.3ms rotation time.  And the
numbers for the SSD are basically identical to the HDD, apart from the bare
write timing.

Do I conclude that the sync timings are all faked by the OS?

Stephen

Reply via email to