v7-0004-pgstat_database-uses-pgstat_io-time-counters.patch
text/x-patch
Filename: v7-0004-pgstat_database-uses-pgstat_io-time-counters.patch
Type: text/x-patch
Part: 2
Message:
Re: Track IO times in pg_stat_io
Patch
Format: format-patch
Series: patch v7-0004
Subject: pgstat_database uses pgstat_io time counters
| File | + | − |
|---|---|---|
| src/backend/utils/activity/pgstat_io.c | 8 | 6 |
| src/include/pgstat.h | 0 | 4 |
From 664c25813452060536a5f4afe49feae44ed17187 Mon Sep 17 00:00:00 2001
From: Melanie Plageman <melanieplageman@gmail.com>
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