aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Riggs <simon@2ndQuadrant.com>2012-10-09 08:15:23 +0100
committerSimon Riggs <simon@2ndQuadrant.com>2012-10-09 08:15:23 +0100
commit82e429794b348cd80c1d1b011e21ffac98bc6e88 (patch)
tree1f5c0d08f151e43a276527c75ea52b49c02c45b8
parentbc433317ae2b0494dea4526b89dc7bb90a65d79b (diff)
downloadpostgresql-82e429794b348cd80c1d1b011e21ffac98bc6e88.tar.gz
postgresql-82e429794b348cd80c1d1b011e21ffac98bc6e88.zip
Add microsecs/op display to pg_test_fsync utility
e.g. fsync 2103.613 ops/sec ( 475 microsecs/op) Peter Geoghegan
-rw-r--r--contrib/pg_test_fsync/pg_test_fsync.c6
-rw-r--r--doc/src/sgml/pgtestfsync.sgml13
2 files changed, 12 insertions, 7 deletions
diff --git a/contrib/pg_test_fsync/pg_test_fsync.c b/contrib/pg_test_fsync/pg_test_fsync.c
index 9fe2301e419..7f7368a3156 100644
--- a/contrib/pg_test_fsync/pg_test_fsync.c
+++ b/contrib/pg_test_fsync/pg_test_fsync.c
@@ -25,7 +25,8 @@
#define LABEL_FORMAT " %-32s"
#define NA_FORMAT "%18s"
-#define OPS_FORMAT "%9.3f ops/sec"
+#define OPS_FORMAT "%9.3f ops/sec (%6.f microsecs/op)"
+#define USECS_SEC 1000000
/* These are macros to avoid timing the function call overhead. */
#ifndef WIN32
@@ -568,8 +569,9 @@ print_elapse(struct timeval start_t, struct timeval stop_t, int ops)
double total_time = (stop_t.tv_sec - start_t.tv_sec) +
(stop_t.tv_usec - start_t.tv_usec) * 0.000001;
double per_second = ops / total_time;
+ double avg_op_time_us = (total_time / ops) * USECS_SEC;
- printf(OPS_FORMAT "\n", per_second);
+ printf(OPS_FORMAT "\n", per_second, avg_op_time_us);
}
#ifndef WIN32
diff --git a/doc/src/sgml/pgtestfsync.sgml b/doc/src/sgml/pgtestfsync.sgml
index 95ba3b81e0c..00ef209fa25 100644
--- a/doc/src/sgml/pgtestfsync.sgml
+++ b/doc/src/sgml/pgtestfsync.sgml
@@ -30,11 +30,14 @@
<application>pg_test_fsync</> is intended to give you a reasonable
idea of what the fastest <xref linkend="guc-wal-sync-method"> is on your
specific system,
- as well as supplying diagnostic information in the event of an
- identified I/O problem. However, differences shown by <application>pg_test_fsync</application>
- might not make any difference in real database throughput, especially
- since many database servers are not speed-limited by their transaction
- logs.
+ as well as supplying diagnostic information in the event of an identified I/O
+ problem. However, differences shown by
+ <application>pg_test_fsync</application> might not make any significant
+ difference in real database throughput, especially since many database servers
+ are not speed-limited by their transaction logs.
+ <application>pg_test_fsync</application> reports average file sync operation
+ time in microseconds for each wal_sync_method, which can be used to inform
+ efforts to optimize the value of <varname>commit_delay</varname>.
</para>
</refsect1>