From 6fd317a319de144a7a999fc6230268521e72a36f Mon Sep 17 00:00:00 2001 From: Melanie Plageman Date: Wed, 21 Feb 2024 20:28:27 -0500 Subject: [PATCH v3 3/5] Add LSNTimeline to PgStat_WalStats Add a globally maintained instance of the new LSNTimeline to PgStat_WalStats and a utility function to insert new values. --- src/backend/utils/activity/pgstat_wal.c | 10 ++++++++++ src/include/pgstat.h | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/src/backend/utils/activity/pgstat_wal.c b/src/backend/utils/activity/pgstat_wal.c index 96e84319f6f..df4c91ee3cf 100644 --- a/src/backend/utils/activity/pgstat_wal.c +++ b/src/backend/utils/activity/pgstat_wal.c @@ -408,3 +408,13 @@ stop: result = (double) (lsn - start.lsn) / lsns_elapsed * time_elapsed + start.time; return Max(result, 0); } + +void +pgstat_wal_update_lsntimeline(TimestampTz time, XLogRecPtr lsn) +{ + PgStatShared_Wal *stats_shmem = &pgStatLocal.shmem->wal; + + LWLockAcquire(&stats_shmem->lock, LW_EXCLUSIVE); + lsntime_insert(&stats_shmem->stats.timeline, time, lsn); + LWLockRelease(&stats_shmem->lock); +} diff --git a/src/include/pgstat.h b/src/include/pgstat.h index 1926ddb00ed..8a63f56fdd3 100644 --- a/src/include/pgstat.h +++ b/src/include/pgstat.h @@ -482,6 +482,7 @@ typedef struct PgStat_WalStats PgStat_Counter wal_sync; PgStat_Counter wal_write_time; PgStat_Counter wal_sync_time; + LSNTimeline timeline; TimestampTz stat_reset_timestamp; } PgStat_WalStats; @@ -764,6 +765,9 @@ extern void pgstat_execute_transactional_drops(int ndrops, struct xl_xact_stats_ extern void pgstat_report_wal(bool force); extern PgStat_WalStats *pgstat_fetch_stat_wal(void); +/* Helpers for maintaining the LSNTimeline */ +extern void pgstat_wal_update_lsntimeline(TimestampTz time, XLogRecPtr lsn); + /* * Variables in pgstat.c -- 2.37.2