summaryrefslogtreecommitdiff
path: root/src/backend/utils/activity/pgstat_wal.c
diff options
context:
space:
mode:
authorMichael Paquier2025-02-24 00:51:56 +0000
committerMichael Paquier2025-02-24 00:51:56 +0000
commit2421e9a51d20bb83154e54a16ce628f9249fa907 (patch)
tree9c9062edb0736975e88442c7e47db230d65bfbaf /src/backend/utils/activity/pgstat_wal.c
parentfc0d0ce978752493868496be6558fa17b7c4c3cf (diff)
Remove read/sync fields from pg_stat_wal and GUC track_wal_io_timing
The four following attributes are removed from pg_stat_wal: * wal_write * wal_sync * wal_write_time * wal_sync_time a051e71e28a1 has added an equivalent of this information in pg_stat_io with more granularity as this now spreads across the backend types, IO context and IO objects. So, keeping the same information in pg_stat_wal has little benefits. Another benefit of this commit is the removal of PendingWalStats, simplifying an upcoming patch to add per-backend WAL statistics, which already support IO statistics and which have access to the write/sync stats data of WAL. The GUC track_wal_io_timing, that was used to enable or disable the aggregation of the write and sync timings for WAL, is also removed. pgstat_prepare_io_time() is simplified. Bump catalog version. Bump PGSTAT_FILE_FORMAT_ID, due to the update of PgStat_WalStats. Author: Bertrand Drouvot <[email protected]> Discussion: https://postgr.es/m/Z7RkQ0EfYaqqjgz/@ip-10-97-1-34.eu-west-3.compute.internal
Diffstat (limited to 'src/backend/utils/activity/pgstat_wal.c')
-rw-r--r--src/backend/utils/activity/pgstat_wal.c24
1 files changed, 2 insertions, 22 deletions
diff --git a/src/backend/utils/activity/pgstat_wal.c b/src/backend/utils/activity/pgstat_wal.c
index c1ca65eb991..4dc41a4a590 100644
--- a/src/backend/utils/activity/pgstat_wal.c
+++ b/src/backend/utils/activity/pgstat_wal.c
@@ -21,8 +21,6 @@
#include "utils/pgstat_internal.h"
-PgStat_PendingWalStats PendingWalStats = {0};
-
/*
* WAL usage counters saved from pgWalUsage at the previous call to
* pgstat_report_wal(). This is used to calculate how much WAL usage
@@ -118,17 +116,10 @@ pgstat_wal_flush_cb(bool nowait)
#define WALSTAT_ACC(fld, var_to_add) \
(stats_shmem->stats.fld += var_to_add.fld)
-#define WALSTAT_ACC_INSTR_TIME(fld) \
- (stats_shmem->stats.fld += INSTR_TIME_GET_MICROSEC(PendingWalStats.fld))
WALSTAT_ACC(wal_records, wal_usage_diff);
WALSTAT_ACC(wal_fpi, wal_usage_diff);
WALSTAT_ACC(wal_bytes, wal_usage_diff);
WALSTAT_ACC(wal_buffers_full, wal_usage_diff);
- WALSTAT_ACC(wal_write, PendingWalStats);
- WALSTAT_ACC(wal_sync, PendingWalStats);
- WALSTAT_ACC_INSTR_TIME(wal_write_time);
- WALSTAT_ACC_INSTR_TIME(wal_sync_time);
-#undef WALSTAT_ACC_INSTR_TIME
#undef WALSTAT_ACC
LWLockRelease(&stats_shmem->lock);
@@ -138,11 +129,6 @@ pgstat_wal_flush_cb(bool nowait)
*/
prevWalUsage = pgWalUsage;
- /*
- * Clear out the statistics buffer, so it can be re-used.
- */
- MemSet(&PendingWalStats, 0, sizeof(PendingWalStats));
-
return false;
}
@@ -158,18 +144,12 @@ pgstat_wal_init_backend_cb(void)
}
/*
- * To determine whether any WAL activity has occurred since last time, not
- * only the number of generated WAL records but also the numbers of WAL
- * writes and syncs need to be checked. Because even transaction that
- * generates no WAL records can write or sync WAL data when flushing the
- * data pages.
+ * To determine whether WAL usage happened.
*/
bool
pgstat_wal_have_pending_cb(void)
{
- return pgWalUsage.wal_records != prevWalUsage.wal_records ||
- PendingWalStats.wal_write != 0 ||
- PendingWalStats.wal_sync != 0;
+ return pgWalUsage.wal_records != prevWalUsage.wal_records;
}
void