Re: "as quickly as possible" (was: remove spurious CREATE INDEX CONCURRENTLY wait)
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Michael Paquier <michael@paquier.xyz>, Dmitry Dolgov <9erthalion6@gmail.com>, James Coleman <jtc331@gmail.com>, Pg Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2020-11-18T22:48:40Z
Lists: pgsql-hackers
Hi, On 2020-11-18 18:41:27 -0300, Alvaro Herrera wrote: > The amount of stuff that this is doing with ProcArrayLock held > exclusively seems a bit excessive; it sounds like we could copy the > values we need first, release the lock, and *then* do all that memory > allocation and string printing -- it's a lock of code for such a > contended lock. Yea, that's a good point. > Anytime a process sees itself as blocked by autovacuum > and wants to signal it, there's a ProcArrayLock hiccup (I didn't > actually measure it, but it's at least five function calls). I'm a bit doubtful it's that important - it's limited in frequency by deadlock_timeout. But worth improving anyway. > We could make this more concurrent by copying lock->tag to a local > variable, releasing the lock, then doing all the string formatting and > printing. See attached quickly.patch. Sounds like a plan. > Now, when this code was written (d7318d43d, 2012), this was a LOG > message; it was demoted to DEBUG1 later (d8f15c95bec, 2015). I think it > would be fair to ... remove the message? Or go back to Simon's original > formulation from commit acac68b2bca, which had this message as DEBUG2 > without any string formatting. I don't really have an opinion on this. Greetings, Andres Freund
Commits
-
Restore lock level to set vacuum flags
- 9aa91cb33b70 14.2 landed
- 0726c764bc4e 15.0 landed
-
Restore lock level to update statusFlags
- dcfff74fb166 14.0 landed
-
Avoid spurious waits in concurrent indexing
- c98763bf51bf 14.0 landed
-
Centralize logic for skipping useless ereport/elog calls.
- 789b938bf2b8 14.0 landed
-
Don't hold ProcArrayLock longer than needed in rare cases
- 450c8230b1f7 14.0 landed
-
Relax lock level for setting PGPROC->statusFlags
- 27838981be9d 14.0 landed
-
Rename PGPROC->vacuumFlags to statusFlags
- cd9c1b3e197a 14.0 landed
-
snapshot scalability: Move PGXACT->vacuumFlags to ProcGlobal->vacuumFlags.
- 5788e258bb26 14.0 cited
-
Allow an autovacuum worker to be interrupted automatically when it is found
- acac68b2bcae 8.3.0 cited