Skip to content

Instantly share code, notes, and snippets.

@kakoni
Created February 7, 2019 14:16
Show Gist options
  • Save kakoni/8e24cd7eceb6b93ce3b83d594f1a13b1 to your computer and use it in GitHub Desktop.
Save kakoni/8e24cd7eceb6b93ce3b83d594f1a13b1 to your computer and use it in GitHub Desktop.
### ex61-nvme, ubuntu 18.04 minimal, no raid. apt-get update, apt-get install postgresql
/usr/lib/postgresql/10/bin/pg_test_fsync
5 seconds per test
O_DIRECT supported on this platform for open_datasync and open_sync.
Compare file sync methods using one 8kB write:
(in wal_sync_method preference order, except fdatasync is Linux's default)
open_datasync 974.559 ops/sec 1026 usecs/op
fdatasync 957.327 ops/sec 1045 usecs/op
fsync 366.054 ops/sec 2732 usecs/op
fsync_writethrough n/a
open_sync 396.387 ops/sec 2523 usecs/op
Compare file sync methods using two 8kB writes:
(in wal_sync_method preference order, except fdatasync is Linux's default)
open_datasync 479.559 ops/sec 2085 usecs/op
fdatasync 821.378 ops/sec 1217 usecs/op
fsync 335.078 ops/sec 2984 usecs/op
fsync_writethrough n/a
open_sync 186.964 ops/sec 5349 usecs/op
Compare open_sync with different write sizes:
(This is designed to compare the cost of writing 16kB in different write
open_sync sizes.)
1 * 16kB open_sync write 355.013 ops/sec 2817 usecs/op
2 * 8kB open_sync writes 197.986 ops/sec 5051 usecs/op
4 * 4kB open_sync writes 108.016 ops/sec 9258 usecs/op
8 * 2kB open_sync writes 47.818 ops/sec 20913 usecs/op
16 * 1kB open_sync writes 23.681 ops/sec 42227 usecs/op
Test if fsync on non-write file descriptor is honored:
(If the times are similar, fsync() can sync data written on a different
descriptor.)
write, fsync, close 406.618 ops/sec 2459 usecs/op
write, close, fsync 418.951 ops/sec 2387 usecs/op
Non-sync'ed 8kB writes:
write 523028.582 ops/sec 2 usecs/op
### cx11 similar setup
/usr/lib/postgresql/10/bin/pg_test_fsync
5 seconds per test
O_DIRECT supported on this platform for open_datasync and open_sync.
Compare file sync methods using one 8kB write:
(in wal_sync_method preference order, except fdatasync is Linux's default)
open_datasync 2862.679 ops/sec 349 usecs/op
fdatasync 2992.365 ops/sec 334 usecs/op
fsync 2556.479 ops/sec 391 usecs/op
fsync_writethrough n/a
open_sync 2614.522 ops/sec 382 usecs/op
Compare file sync methods using two 8kB writes:
(in wal_sync_method preference order, except fdatasync is Linux's default)
open_datasync 1533.507 ops/sec 652 usecs/op
fdatasync 2721.964 ops/sec 367 usecs/op
fsync 2120.455 ops/sec 472 usecs/op
fsync_writethrough n/a
open_sync 1373.114 ops/sec 728 usecs/op
Compare open_sync with different write sizes:
(This is designed to compare the cost of writing 16kB in different write
open_sync sizes.)
1 * 16kB open_sync write 2276.117 ops/sec 439 usecs/op
2 * 8kB open_sync writes 1436.539 ops/sec 696 usecs/op
4 * 4kB open_sync writes 710.259 ops/sec 1408 usecs/op
8 * 2kB open_sync writes 368.992 ops/sec 2710 usecs/op
16 * 1kB open_sync writes 182.178 ops/sec 5489 usecs/op
Test if fsync on non-write file descriptor is honored:
(If the times are similar, fsync() can sync data written on a different
descriptor.)
write, fsync, close 2599.101 ops/sec 385 usecs/op
write, close, fsync 2670.547 ops/sec 374 usecs/op
Non-sync'ed 8kB writes:
write 331707.474 ops/sec 3 usecs/op
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment