Re: Report checkpoint progress with pg_stat_progress_checkpoint (was: Report checkpoint progress in server logs) - Mailing list pgsql-hackers
From | Robert Haas |
---|---|
Subject | Re: Report checkpoint progress with pg_stat_progress_checkpoint (was: Report checkpoint progress in server logs) |
Date | |
Msg-id | CA+TgmoYCu6RpuJ3cZz0e7cZSfaVb=cr6iVcgGMGd5dxX0MYNRA@mail.gmail.com Whole thread Raw |
In response to | Re: Report checkpoint progress with pg_stat_progress_checkpoint (was: Report checkpoint progress in server logs) (Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>) |
Responses |
Re: Report checkpoint progress with pg_stat_progress_checkpoint (was: Report checkpoint progress in server logs)
Re: Report checkpoint progress with pg_stat_progress_checkpoint (was: Report checkpoint progress in server logs) |
List | pgsql-hackers |
On Wed, Nov 16, 2022 at 5:32 AM Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com> wrote: > -1 for CheckpointerShmemStruct as it is being used for running > checkpoints and I don't think adding stats to it is a great idea. > Instead, extending PgStat_CheckpointerStats and using shared memory > stats for reporting progress/last checkpoint related stats is a good > idea IMO. I agree with Andres: progress reporting isn't really quite the same thing as stats, and either place seems like it could be reasonable. I don't presently have an opinion on which is a better fit, but I don't think the fact that CheckpointerShmemStruct is used for running checkpoints rules anything out. Progress reporting is *also* about running checkpoints. Any historical data you want to expose might not be about running checkpoints, but, uh, so what? I don't really see that as a strong argument against it fitting into this struct. > I also think that a new pg_stat_checkpoint view is needed > because, right now, the PgStat_CheckpointerStats stats are exposed via > the pg_stat_bgwriter view, having a separate view for checkpoint stats > is good here. Yep. > Also, removing CheckpointStatsData and moving all of > those members to PgStat_CheckpointerStats, of course, by being careful > about the amount of shared memory required, is also a good idea IMO. > Going forward, PgStat_CheckpointerStats and pg_stat_checkpoint view > can be a single point of location for all the checkpoint related > stats. I'm not sure that I completely follow this part, or that I agree with it. I have never really understood why we drive background writer or checkpointer statistics through the statistics collector. Here again, for things like table statistics, there is no choice, because we could have an unbounded number of tables and need to keep statistics about all of them. The statistics collector can handle that by allocating more memory as required. But there is only one background writer and only one checkpointer, so that is not needed in those cases. Why not just have them expose anything they want to expose through shared memory directly? If the statistics collector provides services that we care about, like persisting data across restarts or making snapshots for transactional behavior, then those might be reasons to go through it even for the background writer or checkpointer. But if so, we should be explicit about what the reasons are, both in the mailing list discussion and in code comments. Otherwise I fear that we'll just end up doing something in a more complicated way than is really necessary. -- Robert Haas EDB: http://www.enterprisedb.com
pgsql-hackers by date: