From 82e429794b348cd80c1d1b011e21ffac98bc6e88 Mon Sep 17 00:00:00 2001 From: Simon Riggs Date: Tue, 9 Oct 2012 08:15:23 +0100 Subject: [PATCH] Add microsecs/op display to pg_test_fsync utility e.g. fsync 2103.613 ops/sec ( 475 microsecs/op) Peter Geoghegan --- contrib/pg_test_fsync/pg_test_fsync.c | 6 ++++-- doc/src/sgml/pgtestfsync.sgml | 13 ++++++++----- 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 9fe2301e41..7f7368a315 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 95ba3b81e0..00ef209fa2 100644 --- a/doc/src/sgml/pgtestfsync.sgml +++ b/doc/src/sgml/pgtestfsync.sgml @@ -30,11 +30,14 @@ pg_test_fsync is intended to give you a reasonable idea of what the fastest is on your specific system, - as well as supplying diagnostic information in the event of an - identified I/O problem. However, differences shown by pg_test_fsync - 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 + pg_test_fsync might not make any significant + difference in real database throughput, especially since many database servers + are not speed-limited by their transaction logs. + pg_test_fsync 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 commit_delay. -- GitLab