Re: Refactoring backend fork+exec code - Mailing list pgsql-hackers

From Heikki Linnakangas
Subject Re: Refactoring backend fork+exec code
Date
Msg-id 606a62d6-321c-4967-92c1-2d4e20a2c136@iki.fi
Whole thread Raw
In response to Re: Refactoring backend fork+exec code  (reid.thompson@crunchydata.com)
Responses Re: Refactoring backend fork+exec code
Re: Refactoring backend fork+exec code
List pgsql-hackers
On 29/01/2024 17:54, reid.thompson@crunchydata.com wrote:
> On Thu, 2024-01-25 at 01:51 +0200, Heikki Linnakangas wrote:
>>
>> And here we go. BackendID is now a 1-based index directly into the
>> PGPROC array.
> 
> Would it be worthwhile to also note in this comment FIRST_AUX_PROC's
> and IsAuxProcess()'s dependency on B_ARCHIVER and it's location in the
> enum table?

Yeah, that might be in order. Although looking closer, it's only used in 
IsAuxProcess, which is only used in one sanity check in 
AuxProcessMain(). And even that gets refactored away by the later 
patches in this thread. So on second thoughts, I'll just remove it 
altogether.

I spent some more time on the 'lastBackend' optimization in sinvaladt.c. 
I realized that it became very useless with these patches, because aux 
processes are allocated pgprocno's after all the slots for regular 
backends. There are always aux processes running, so lastBackend would 
always have a value close to the max anyway. I replaced that with a 
dense 'pgprocnos' array that keeps track of the exact slots that are in 
use. I'm not 100% sure this is worth the effort; does any real world 
workload send shared invalidations so frequently that this matters? In 
any case, this should avoid the regression if such a workload exists.

New patch set attached. I think these are ready to be committed, but 
would appreciate a final review.

-- 
Heikki Linnakangas
Neon (https://neon.tech)

Attachment

pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: When extended query protocol ends?
Next
From: Sergey Prokhorenko
Date:
Subject: Re: UUID v7