Skip to content

Instantly share code, notes, and snippets.

@pklaus
Created January 7, 2020 13:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pklaus/1e9a8e1fe1caa903845405f02ca6fec1 to your computer and use it in GitHub Desktop.
Save pklaus/1e9a8e1fe1caa903845405f02ca6fec1 to your computer and use it in GitHub Desktop.
Postgres / PostgreSQL Benchmarks with pg_test_fsync on a Samsung 970 Evo Plus 2TB PCIe M.2 2280 SSD (AMD Ryzen 3600X on X570 Chipset)
$ uname -a
Linux owl 5.4.8-arch1-1 #1 SMP PREEMPT Sat, 04 Jan 2020 23:46:18 +0000 x86_64 GNU/Linux
$ cat /etc/issue
Arch Linux \r (\l)
$ pg_config --version
PostgreSQL 12.1
$ cd ~
$ 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 1435.065 ops/sec 697 usecs/op
fdatasync 1416.766 ops/sec 706 usecs/op
fsync 686.976 ops/sec 1456 usecs/op
fsync_writethrough n/a
open_sync 689.974 ops/sec 1449 usecs/op
Compare file sync methods using two 8kB writes:
(in wal_sync_method preference order, except fdatasync is Linux's default)
open_datasync 719.174 ops/sec 1390 usecs/op
fdatasync 1318.471 ops/sec 758 usecs/op
fsync 663.196 ops/sec 1508 usecs/op
fsync_writethrough n/a
open_sync 341.424 ops/sec 2929 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 665.534 ops/sec 1503 usecs/op
2 * 8kB open_sync writes 345.405 ops/sec 2895 usecs/op
4 * 4kB open_sync writes 179.666 ops/sec 5566 usecs/op
8 * 2kB open_sync writes 81.946 ops/sec 12203 usecs/op
16 * 1kB open_sync writes 41.146 ops/sec 24304 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 472.882 ops/sec 2115 usecs/op
write, close, fsync 217.122 ops/sec 4606 usecs/op
Non-sync'ed 8kB writes:
write 457751.776 ops/sec 2 usecs/op
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment