Re: Improve LWLock tranche name visibility across backends
Sami Imseih <samimseih@gmail.com>
From: Sami Imseih <samimseih@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Nathan Bossart <nathandbossart@gmail.com>,
Andres Freund <andres@anarazel.de>, Bertrand Drouvot <bertranddrouvot.pg@gmail.com>,
Rahila Syed <rahilasyed90@gmail.com>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2025-08-19T20:52:33Z
Lists: pgsql-hackers
> Nathan Bossart <nathandbossart@gmail.com> writes: > > On Tue, Aug 19, 2025 at 02:37:19PM -0400, Andres Freund wrote: > >> Sure, but we don't need to support a large number of tranches. Just make it, > >> idk, 128 entries long. Adding a dynamically allocated dsm to every server > >> seems like a waste - ever shared mapping makes fork / exit slower... > > > The other issue is that there's presently no limit on the length of a > > tranche name registered via LWLockRegisterTranche(). Life would become > > much simpler if we're willing to put a limit on both that and the number of > > tranches, but thus far we've been trying to avoid it. > > I can hardly imagine a reason why it wouldn't be okay to limit the > lengths of tranche names. But especially so if an unlimited length > causes practical problems. If we limit the tranche name to NAMEDATALEN and also limit the number of tranches an extension can register, we can put this all in static shared memory (We would still need to have a backend local cache to allow lookups to avoid going to shared memory). However, I am not sure what the limit would be for the number of tranches, and if we do impose something, will it break anything that is out there? -- Sami
Commits
-
test_dsa: Avoid leaking LWLock tranches.
- c5c74282f2ea 19 (unreleased) landed
-
Teach DSM registry to ERROR if attaching to an uninitialized entry.
- b26d76f64327 18.2 landed
- ac2800ddc185 17.8 landed
- 1165a933aab1 19 (unreleased) landed
-
Add a test harness for the LWLock tranche code.
- 16607718c010 19 (unreleased) landed
-
Revert recent change to RequestNamedLWLockTranche().
- d814d7fc3d52 19 (unreleased) landed
-
Move dynamically-allocated LWLock tranche names to shared memory.
- 38b602b0289f 19 (unreleased) landed
-
Prepare DSM registry for upcoming changes to LWLock tranche names.
- 5487058b56e0 19 (unreleased) landed
-
Add GetNamedDSA() and GetNamedDSHash().
- fe07100e82b0 19 (unreleased) cited