Re: Improve LWLock tranche name visibility across backends

From: Sami Imseih <samimseih(at)gmail(dot)com>
To: Nathan Bossart <nathandbossart(at)gmail(dot)com>
Cc: Bertrand Drouvot <bertranddrouvot(dot)pg(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Improve LWLock tranche name visibility across backends
Date: 2025-07-15 17:06:00
Message-ID: CAA5RZ0v2JdAFh9yBsgvqNXrF68SKoF+bbjhn7ZBW_Oo66XUhrQ@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tue, Jul 15, 2025 at 11:57 AM Nathan Bossart
<nathandbossart(at)gmail(dot)com> wrote:
>
> On Tue, Jul 15, 2025 at 11:52:19AM -0500, Sami Imseih wrote:
> >> Another random thought: I worry that the dshash approach might be quite a
> >> bit slower, and IIUC we just need to map an integer to a string. Maybe we
> >> should just use a DSA for LWLockTrancheNames. IOW we'd leave it as a char**
> >> but put it in shared memory.
> >
> > To use DSA just for this purpose, we would need to maintain an array of
> > dsa_pointers that reference the string(s), right? I am not clear what you
> > mean by using dsa to put the char**
>
> I was imagining putting the array in one big DSA allocation instead of
> carting around a pointer for each tranche name. (Sorry, I realize I am
> hand-waving over some of the details.)

I understood it like this. Here is a sketch:

```
dsa_pointer p;

dsa = dsa_create(....)

p = dsa_allocate(dsa, LWLockTranchesInitialSize());
tranche_names = (char **) dsa_get_address(dsa, p);
tranche_names[0] = "my tranche";
tranche_names[1] = "my tranche";
```

We will need to track the size and resize if needed.

Is this what you mean, from a high level?

--
Sami

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Masahiko Sawada 2025-07-15 17:07:11 Re: POC: enable logical decoding when wal_level = 'replica' without a server restart
Previous Message Nathan Bossart 2025-07-15 16:57:31 Re: Improve LWLock tranche name visibility across backends