Re: Refactoring backend fork+exec code

From: Heikki Linnakangas <hlinnaka(at)iki(dot)fi>
To: reid(dot)thompson(at)crunchydata(dot)com, Andres Freund <andres(at)anarazel(dot)de>
Cc: Tristan Partin <tristan(at)neon(dot)tech>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>, Thomas Munro <thomas(dot)munro(at)gmail(dot)com>
Subject: Re: Refactoring backend fork+exec code
Date: 2024-01-30 00:08:36
Message-ID: 606a62d6-321c-4967-92c1-2d4e20a2c136@iki.fi
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 29/01/2024 17:54, reid(dot)thompson(at)crunchydata(dot)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 Content-Type Size
v8-0001-Remove-superfluous-pgprocno-field-from-PGPROC.patch text/x-patch 14.3 KB
v8-0002-Redefine-backend-ID-to-be-an-index-into-the-proc-.patch text/x-patch 40.6 KB
v8-0003-Replace-lastBackend-with-an-array-of-in-use-slots.patch text/x-patch 6.8 KB
v8-0004-Remove-MyAuxProcType-use-MyBackendType-instead.patch text/x-patch 10.5 KB
v8-0005-Use-MyBackendType-in-more-places-to-check-what-pr.patch text/x-patch 18.9 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Sergey Prokhorenko 2024-01-30 00:27:21 Re: UUID v7
Previous Message Tom Lane 2024-01-29 23:40:15 Re: When extended query protocol ends?