On Fri, Nov 22, 2024 at 06:13:16PM -0500, Andres Freund wrote: >> - if (procStatus && procStatus->st_backendType == B_AUTOVAC_WORKER) >> + if (pgstat_get_backend_type(pid) == B_AUTOVAC_WORKER) > > Because we already mapped the pid to a ProcNumber, it'd be cheaper to access > the backend status via procnumber.
D'oh, I missed that ProcNumber could be used as an index for the BackendStatusArray. Is the attached more like what you are imagining?
> We don't need the pgstat_begin_read_activity() protocol when just accessing a > single 4 byte value - we assume in lots of places that can be read in a > non-tearable way. > >> + if (pgstat_read_activity_complete(before_changecount, >> + after_changecount)) >> + break; >> + >> + CHECK_FOR_INTERRUPTS(); >> + } >> + >> + if (found) >> + return beentry->st_backendType; > > But if we were to follow it, we'd certainly need to use it here too.