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: pgsql-hackers@lists.postgresql.org
Date: 2025-02-28T05:41:34Z
Lists: pgsql-hackers
On Wed, Feb 26, 2025 at 09:48:50AM +0000, Bertrand Drouvot wrote: > Yeah I think that makes sense, done that way in the attached. > > Speaking about physical walsender, I moved the test to 001_stream_rep.pl instead > (would also fail without the fix). Hmm. I was doing some more checks with this patch, and on closer look I am wondering if the location you have chosen for the stats reports is too aggressive: this requires a LWLock for the WAL sender backend type taken in exclusive mode, with each step of WalSndLoop() taken roughly each time a record or a batch of records is sent. A single installcheck with a primary/standby setup can lead to up to 50k stats report calls. With smaller records, the loop can become hotter, can't it? Also, there can be a high number of WAL senders on a single node, and I've heard of some customers with complex logical decoding deployments with dozens of logical WAL senders. Isn't there a risk of having this code path become a point of contention? It seems to me that we should benchmark this change more carefully, perhaps even reduce the frequency of the report calls. -- 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