From 664c25813452060536a5f4afe49feae44ed17187 Mon Sep 17 00:00:00 2001 From: Melanie Plageman Date: Tue, 21 Mar 2023 20:36:10 -0400 Subject: [PATCH v7 4/4] pgstat_database uses pgstat_io time counters Use pgstat_io's pending counters to increment pgStatBlockWriteTime and pgStatBlockReadTime. --- src/backend/utils/activity/pgstat_io.c | 14 ++++++++------ src/include/pgstat.h | 4 ---- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/activity/pgstat_io.c b/src/backend/utils/activity/pgstat_io.c index 0cf4b78947..c22c178078 100644 --- a/src/backend/utils/activity/pgstat_io.c +++ b/src/backend/utils/activity/pgstat_io.c @@ -124,13 +124,11 @@ pgstat_count_io_op_time(IOObject io_object, IOContext io_context, IOOp io_op, if (io_op == IOOP_WRITE) { - pgstat_count_buffer_write_time(INSTR_TIME_GET_MICROSEC(io_time)); if (io_object == IOOBJECT_RELATION) INSTR_TIME_ADD(pgBufferUsage.blk_write_time, io_time); } else if (io_op == IOOP_READ) { - pgstat_count_buffer_read_time(INSTR_TIME_GET_MICROSEC(io_time)); if (io_object == IOOBJECT_RELATION) INSTR_TIME_ADD(pgBufferUsage.blk_read_time, io_time); } @@ -181,15 +179,19 @@ pgstat_flush_io(bool nowait) { for (int io_op = 0; io_op < IOOP_NUM_TYPES; io_op++) { - instr_time time; + PgStat_Counter time; bktype_shstats->counts[io_object][io_context][io_op] += PendingIOStats.counts[io_object][io_context][io_op]; - time = PendingIOStats.pending_times[io_object][io_context][io_op]; + time = INSTR_TIME_GET_MICROSEC(PendingIOStats.pending_times[io_object][io_context][io_op]); - bktype_shstats->times[io_object][io_context][io_op] += - INSTR_TIME_GET_MICROSEC(time); + bktype_shstats->times[io_object][io_context][io_op] += time; + + if (io_op == IOOP_WRITE) + pgStatBlockWriteTime += time; + else if (io_op == IOOP_READ) + pgStatBlockReadTime += time; } } } diff --git a/src/include/pgstat.h b/src/include/pgstat.h index 4adbf29fdf..3904182075 100644 --- a/src/include/pgstat.h +++ b/src/include/pgstat.h @@ -526,10 +526,6 @@ extern void pgstat_report_checksum_failures_in_db(Oid dboid, int failurecount); extern void pgstat_report_checksum_failure(void); extern void pgstat_report_connect(Oid dboid); -#define pgstat_count_buffer_read_time(n) \ - (pgStatBlockReadTime += (n)) -#define pgstat_count_buffer_write_time(n) \ - (pgStatBlockWriteTime += (n)) #define pgstat_count_conn_active_time(n) \ (pgStatActiveTime += (n)) #define pgstat_count_conn_txn_idle_time(n) \ -- 2.37.2