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