Re: [BUG]: the walsender does not update its IO statistics until it exits
Michael Paquier <michael@paquier.xyz>
From: Michael Paquier <michael@paquier.xyz>
To: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
Cc: Andres Freund <andres@anarazel.de>, pgsql-hackers@lists.postgresql.org
Date: 2025-09-30T22:43:31Z
Lists: pgsql-hackers
On Tue, Sep 30, 2025 at 10:05:43AM +0000, Bertrand Drouvot wrote: > On Tue, Sep 30, 2025 at 04:37:25PM +0900, Michael Paquier wrote: >> Or perhaps you think that the pending data of a stats kind could be >> different if a kind allows transactional and non-transactional >> flushes? > > Yeah that was my thought: one stats kind could have metrics that are transactional > and some metrics that are non-transactional. This could be possible for > both variable and fixed stats, that's why I was thinking about having > 2 pending lists for the variables stats and 2 flush callbacks for fixed stats. Okay. The first use case that comes into mind here is pgstat_io.c, to offer periodic reports on analytics (please extend that to the backend stats for WAL and I/O). In this case, it seems that it would be good to know about all the stats fields, meaning that a single pending list is OK. My feeling would be to reuse pgstat_report_stat() and plant a new argument for the transactional state (or just a bits32 that works along the force option) with the same threshold for reports, combined with a new option to allow non-transactional reports (don't see a point in forcing these and wait on locks, 1-min reports not happening would not matter if an analytical query takes a few hours). It would be better to determine a list of the stats we'd be interesting in seeing updated without waiting for a query or a transaction to finish, then design the needs around these requirements, with a new thread to discuss the matter. The IO stats are just the first case coming into mind. -- Michael
Commits
-
Flush the IO statistics of active WAL senders more frequently
- e2a82cd23a88 16.9 landed
- 5cbbe70a9cc6 17.5 landed
- 039549d70f6a 18.0 landed
-
Optimize check for pending backend IO stats
- 6d3ea48ff1ae 18.0 landed