From a32a74f5285ec151086bc8cc8f6a85bde77ba323 Mon Sep 17 00:00:00 2001
From: Andres Freund <andres@anarazel.de>
Date: Fri, 31 Jan 2025 10:03:40 -0500
Subject: [PATCH v1 1/2] config: Split "Worker Processes" out of "Asynchronous
 Behavior"

Discussion: https://postgr.es/m/x3tlw2jk5gm3r3mv47hwrshffyw7halpczkfbk3peksxds7bvc@lguk43z3bsyq
---
 src/include/utils/guc_tables.h                |  1 +
 src/backend/utils/misc/guc_tables.c           | 11 ++++++-----
 src/backend/utils/misc/postgresql.conf.sample |  3 +++
 doc/src/sgml/config.sgml                      |  6 ++++++
 4 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/src/include/utils/guc_tables.h b/src/include/utils/guc_tables.h
index 3f18ff451ef..0b16b4dcf57 100644
--- a/src/include/utils/guc_tables.h
+++ b/src/include/utils/guc_tables.h
@@ -65,6 +65,7 @@ enum config_group
 	RESOURCES_KERNEL,
 	RESOURCES_BGWRITER,
 	RESOURCES_ASYNCHRONOUS,
+	RESOURCES_WORKER_PROCESSES,
 	WAL_SETTINGS,
 	WAL_CHECKPOINTS,
 	WAL_ARCHIVING,
diff --git a/src/backend/utils/misc/guc_tables.c b/src/backend/utils/misc/guc_tables.c
index 38cb9e970d5..c6a999a64cd 100644
--- a/src/backend/utils/misc/guc_tables.c
+++ b/src/backend/utils/misc/guc_tables.c
@@ -683,6 +683,7 @@ const char *const config_group_names[] =
 	[RESOURCES_KERNEL] = gettext_noop("Resource Usage / Kernel Resources"),
 	[RESOURCES_BGWRITER] = gettext_noop("Resource Usage / Background Writer"),
 	[RESOURCES_ASYNCHRONOUS] = gettext_noop("Resource Usage / Asynchronous Behavior"),
+	[RESOURCES_WORKER_PROCESSES] = gettext_noop("Resource Usage / Worker Processes"),
 	[WAL_SETTINGS] = gettext_noop("Write-Ahead Log / Settings"),
 	[WAL_CHECKPOINTS] = gettext_noop("Write-Ahead Log / Checkpoints"),
 	[WAL_ARCHIVING] = gettext_noop("Write-Ahead Log / Archiving"),
@@ -1962,7 +1963,7 @@ struct config_bool ConfigureNamesBool[] =
 	},
 
 	{
-		{"parallel_leader_participation", PGC_USERSET, RESOURCES_ASYNCHRONOUS,
+		{"parallel_leader_participation", PGC_USERSET, RESOURCES_WORKER_PROCESSES,
 			gettext_noop("Controls whether Gather and Gather Merge also run subplans."),
 			gettext_noop("Should gather nodes also run subplans or just gather tuples?"),
 			GUC_EXPLAIN
@@ -3234,7 +3235,7 @@ struct config_int ConfigureNamesInt[] =
 	{
 		{"max_worker_processes",
 			PGC_POSTMASTER,
-			RESOURCES_ASYNCHRONOUS,
+			RESOURCES_WORKER_PROCESSES,
 			gettext_noop("Maximum number of concurrent worker processes."),
 			NULL,
 		},
@@ -3487,7 +3488,7 @@ struct config_int ConfigureNamesInt[] =
 	},
 
 	{
-		{"max_parallel_maintenance_workers", PGC_USERSET, RESOURCES_ASYNCHRONOUS,
+		{"max_parallel_maintenance_workers", PGC_USERSET, RESOURCES_WORKER_PROCESSES,
 			gettext_noop("Sets the maximum number of parallel processes per maintenance operation."),
 			NULL
 		},
@@ -3497,7 +3498,7 @@ struct config_int ConfigureNamesInt[] =
 	},
 
 	{
-		{"max_parallel_workers_per_gather", PGC_USERSET, RESOURCES_ASYNCHRONOUS,
+		{"max_parallel_workers_per_gather", PGC_USERSET, RESOURCES_WORKER_PROCESSES,
 			gettext_noop("Sets the maximum number of parallel processes per executor node."),
 			NULL,
 			GUC_EXPLAIN
@@ -3508,7 +3509,7 @@ struct config_int ConfigureNamesInt[] =
 	},
 
 	{
-		{"max_parallel_workers", PGC_USERSET, RESOURCES_ASYNCHRONOUS,
+		{"max_parallel_workers", PGC_USERSET, RESOURCES_WORKER_PROCESSES,
 			gettext_noop("Sets the maximum number of parallel workers that can be active at one time."),
 			NULL,
 			GUC_EXPLAIN
diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample
index 079efa1baa7..1197efb26df 100644
--- a/src/backend/utils/misc/postgresql.conf.sample
+++ b/src/backend/utils/misc/postgresql.conf.sample
@@ -198,6 +198,9 @@
 #effective_io_concurrency = 1		# 1-1000; 0 disables prefetching
 #maintenance_io_concurrency = 10	# 1-1000; 0 disables prefetching
 #io_combine_limit = 128kB		# usually 1-32 blocks (depends on OS)
+
+# - Worker Processes -
+
 #max_worker_processes = 8		# (change requires restart)
 #max_parallel_workers_per_gather = 2	# limited by max_parallel_workers
 #max_parallel_maintenance_workers = 2	# limited by max_parallel_workers
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index a782f109982..ca6077d1666 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -2618,7 +2618,13 @@ include_dir 'conf.d'
         </para>
        </listitem>
       </varlistentry>
+     </variablelist>
+    </sect2>
 
+    <sect2 id="runtime-config-resource-worker-processes">
+     <title>Worker Processes</title>
+
+     <variablelist>
       <varlistentry id="guc-max-worker-processes" xreflabel="max_worker_processes">
        <term><varname>max_worker_processes</varname> (<type>integer</type>)
        <indexterm>
-- 
2.48.1.76.g4e746b1a31.dirty

