@@ -6953,10 +6953,15 @@ LogCheckpointEnd(bool restartpoint)
6953
6953
{
6954
6954
long write_secs ,
6955
6955
sync_secs ,
6956
- total_secs ;
6956
+ total_secs ,
6957
+ longest_secs ,
6958
+ average_secs ;
6957
6959
int write_usecs ,
6958
6960
sync_usecs ,
6959
- total_usecs ;
6961
+ total_usecs ,
6962
+ longest_usecs ,
6963
+ average_usecs ;
6964
+ uint64 average_sync_time ;
6960
6965
6961
6966
CheckpointStats .ckpt_end_t = GetCurrentTimestamp ();
6962
6967
@@ -6972,26 +6977,50 @@ LogCheckpointEnd(bool restartpoint)
6972
6977
CheckpointStats .ckpt_sync_end_t ,
6973
6978
& sync_secs , & sync_usecs );
6974
6979
6980
+ /*
6981
+ * Timing values returned from CheckpointStats are in microseconds.
6982
+ * Convert to the second plus microsecond form that TimestampDifference
6983
+ * returns for homogeneous printing.
6984
+ */
6985
+ longest_secs = (long ) (CheckpointStats .ckpt_longest_sync / 1000000 );
6986
+ longest_usecs = CheckpointStats .ckpt_longest_sync -
6987
+ (uint64 ) longest_secs * 1000000 ;
6988
+
6989
+ average_sync_time = 0 ;
6990
+ if (CheckpointStats .ckpt_sync_rels > 0 )
6991
+ average_sync_time = CheckpointStats .ckpt_agg_sync_time /
6992
+ CheckpointStats .ckpt_sync_rels ;
6993
+ average_secs = (long ) (average_sync_time / 1000000 );
6994
+ average_usecs = average_sync_time - (uint64 ) average_secs * 1000000 ;
6995
+
6975
6996
if (restartpoint )
6976
6997
elog (LOG , "restartpoint complete: wrote %d buffers (%.1f%%); "
6977
- "write=%ld.%03d s, sync=%ld.%03d s, total=%ld.%03d s" ,
6998
+ "write=%ld.%03d s, sync=%ld.%03d s, total=%ld.%03d s; "
6999
+ "sync files=%d, longest=%ld.%03d s, average=%ld.%03d s" ,
6978
7000
CheckpointStats .ckpt_bufs_written ,
6979
7001
(double ) CheckpointStats .ckpt_bufs_written * 100 / NBuffers ,
6980
7002
write_secs , write_usecs / 1000 ,
6981
7003
sync_secs , sync_usecs / 1000 ,
6982
- total_secs , total_usecs / 1000 );
7004
+ total_secs , total_usecs / 1000 ,
7005
+ CheckpointStats .ckpt_sync_rels ,
7006
+ longest_secs , longest_usecs / 1000 ,
7007
+ average_secs , average_usecs / 1000 );
6983
7008
else
6984
7009
elog (LOG , "checkpoint complete: wrote %d buffers (%.1f%%); "
6985
7010
"%d transaction log file(s) added, %d removed, %d recycled; "
6986
- "write=%ld.%03d s, sync=%ld.%03d s, total=%ld.%03d s" ,
7011
+ "write=%ld.%03d s, sync=%ld.%03d s, total=%ld.%03d s; "
7012
+ "sync files=%d, longest=%ld.%03d s, average=%ld.%03d s" ,
6987
7013
CheckpointStats .ckpt_bufs_written ,
6988
7014
(double ) CheckpointStats .ckpt_bufs_written * 100 / NBuffers ,
6989
7015
CheckpointStats .ckpt_segs_added ,
6990
7016
CheckpointStats .ckpt_segs_removed ,
6991
7017
CheckpointStats .ckpt_segs_recycled ,
6992
7018
write_secs , write_usecs / 1000 ,
6993
7019
sync_secs , sync_usecs / 1000 ,
6994
- total_secs , total_usecs / 1000 );
7020
+ total_secs , total_usecs / 1000 ,
7021
+ CheckpointStats .ckpt_sync_rels ,
7022
+ longest_secs , longest_usecs / 1000 ,
7023
+ average_secs , average_usecs / 1000 );
6995
7024
}
6996
7025
6997
7026
/*
0 commit comments