Re: per backend WAL statistics
Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
Hi, On Mon, Mar 10, 2025 at 03:08:49PM +0300, Nazir Bilal Yavuz wrote: > Hi, > > Thank you for working on this! > > I just started reading the code and have a couple of questions. Thanks for looking at it! > I think that every time we flush IO or WAL stats, we want(?) to flush > backend stats as well, Yeah, I think that's happening anyway. > so would it make sense to move > pgstat_flush_backend() calls to inside of pgstat_flush_io() and > pgstat_wal_flush_cb()? I don't think so because pgstat_flush_backend() still needs to be called by the pgstat_backend_flush_cb() (i.e flush_static_cb) callback (I mean I think this makes sense to keep this callback around and that it does "really" something). So for example, for the WAL case, that would mean the backend WAL stats would be flushed twice: one time from pgstat_wal_flush_cb() (i.e flush_static_cb) callback and one time from the pgstat_backend_flush_cb() (another flush_static_cb) callback. I think it's better to keep them separate and reason as they are distinct types of stats (which they really are). I think we had the same kind of reasoning while working on [1]. > I see that backend statistics are not collected > for some of the backend types but that is already checked in the > pgstat_flush_backend() with pgstat_tracks_backend_bktype(). Sorry, I don't get it. Do you have a question around that? > Also, is there a chance that wal_bytes gets incremented without > wal_records getting incremented? I searched the code and did not find > any example of that but I just wanted to be sure. If there is a case > like that, then pgstat_backend_wal_have_pending() needs to check > wal_bytes instead of wal_records. I think that's fine. That's also how pgstat_wal_have_pending_cb() has been re-factored in 2421e9a51d2. [1]: https://www.postgresql.org/message-id/flat/Z0QjeIkwC0HNI16K%40ip-10-97-1-34.eu-west-3.compute.internal#16762c1767ffb168318e7c3734fa5f64 Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com
Commits
-
Fix use-after-free in pgstat_fetch_stat_backend_by_pid()
- 3191a593d6de 18.0 landed
-
Remove initialization from PendingBackendStats
- f554a95379a9 18.0 landed
-
Add WAL data to backend statistics
- 76def4cdd7c2 18.0 landed
-
Improve check for detection of pending data in backend statistics
- 9a8dd2c5a6d9 18.0 landed
-
Fix some gaps in pg_stat_io with WAL receiver and WAL summarizer
- f4694e0f35b2 18.0 landed
-
Handle auxiliary processes in SQL functions of backend statistics
- 3f1db99bfabb 18.0 landed
-
Invent pgstat_fetch_stat_backend_by_pid()
- c2a50ac678eb 18.0 landed
-
Refactor code of pg_stat_get_wal() building result tuple
- 495864a4cf16 18.0 landed
-
Adding new PgStat_WalCounters structure in pgstat.h
- 0e42d31b0b22 18.0 landed
-
Remove pgstat_flush_wal()
- d7cbeaf261da 18.0 landed
-
Refactor some code related to backend statistics
- 2c14037bb57c 18.0 landed
-
Add backend-level statistics to pgstats
- 9aea73fc61d4 18.0 cited