Allow changing autovacuum_max_workers without restarting.
authorNathan Bossart <[email protected]>
Mon, 6 Jan 2025 21:01:22 +0000 (15:01 -0600)
committerNathan Bossart <[email protected]>
Mon, 6 Jan 2025 21:01:22 +0000 (15:01 -0600)
commitc758119e5bfb47b38cf957f9a5a37ceae96fa9b3
treed94191ad4e777efe0d95f419245b2b55450d3ac0
parent5e68f6119268d8c76b860bb56014335697c687db
Allow changing autovacuum_max_workers without restarting.

This commit introduces a new parameter named
autovacuum_worker_slots that controls how many autovacuum worker
slots to reserve during server startup.  Modifying this new
parameter's value does require a server restart, but it should
typically be set to the upper bound of what you might realistically
need to set autovacuum_max_workers.  With that new parameter in
place, autovacuum_max_workers can now be changed with a SIGHUP
(e.g., pg_ctl reload).

If autovacuum_max_workers is set higher than
autovacuum_worker_slots, a WARNING is emitted, and the server will
only start up to autovacuum_worker_slots workers at a given time.
If autovacuum_max_workers is set to a value less than the number of
currently-running autovacuum workers, the existing workers will
continue running, but no new workers will be started until the
number of running autovacuum workers drops below
autovacuum_max_workers.

Reviewed-by: Sami Imseih, Justin Pryzby, Robert Haas, Andres Freund, Yogesh Sharma
Discussion: https://postgr.es/m/20240410212344.GA1824549%40nathanxps13
doc/src/sgml/config.sgml
doc/src/sgml/runtime.sgml
src/backend/access/transam/xlog.c
src/backend/postmaster/autovacuum.c
src/backend/postmaster/pmchild.c
src/backend/storage/lmgr/proc.c
src/backend/utils/init/postinit.c
src/backend/utils/misc/guc_tables.c
src/backend/utils/misc/postgresql.conf.sample
src/include/postmaster/autovacuum.h
src/test/perl/PostgreSQL/Test/Cluster.pm