Re: allow changing autovacuum_max_workers without restarting

Nathan Bossart <nathandbossart@gmail.com>

From: Nathan Bossart <nathandbossart@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Peter Eisentraut <peter@eisentraut.org>, Andres Freund <andres@anarazel.de>, pgsql-hackers@lists.postgresql.org, "Imseih (AWS), Sami" <simseih@amazon.com>, Justin Pryzby <pryzby@telsasoft.com>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2025-04-28T14:41:26Z
Lists: pgsql-hackers
On Mon, Apr 28, 2025 at 09:14:54AM -0400, Tom Lane wrote:
> Peter Eisentraut <peter@eisentraut.org> writes:
>> This initdb output seems, well, kinda fake, which it is by its own
>> admission.
> 
> Agreed.
> 
>> Could we do this less fake maybe like this:
>>      selecting default "max_connections", "autovacuum_worker_slots" ... 100, 16
>> with the actual wait at the "..."?
> 
> Perhaps that would be all right ...
> 
>> (It doesn't seem impossible that someone will want to add more default
>> selecting for various worker or process slots, and this would allow adding
>> these easily, versus adding more "fake" output lines.)
> 
> ... but I can't see this approach scaling to three or four or five
> outputs.  The line would get unreasonably long.
> 
> My own proposal given the way it works now is to just print
> max_connections and not mention autovacuum_worker_slots at all.
> Our choice for max_connections is worth reporting, but I don't
> feel that everything derived from it needs to be reported.

I'm fine with either of these ideas.  If I had to choose one, I'd just
remove the autovacuum_worker_slots report for the reasons Tom noted.

However, weren't we considering reverting some of this stuff [0]?  I see
that sawshark is now choosing max_connections = 40 and
autovacuum_worker_slots = 6, and since there are no other apparent related
buildfarm failures, I'm assuming that nobody else is testing the 60
semaphores case anymore.

[0] https://postgr.es/m/618497.1742347456%40sss.pgh.pa.us

-- 
nathan



Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Give up on running with NetBSD/OpenBSD's default semaphore settings.

  2. initdb: Do not report default autovacuum_worker_slots.

  3. Lower default value of autovacuum_worker_slots in initdb as needed.

  4. Allow changing autovacuum_max_workers without restarting.

  5. Reserve a PGPROC slot and semaphore for the slotsync worker process.

  6. Make archiver process an auxiliary process.

  7. Correct the formulas for System V IPC parameters SEMMNI and SEMMNS in docs.