From b4c8d2e6f56652e891cf429484490bf48f16bb62 Mon Sep 17 00:00:00 2001 From: Alex Vandiver Date: Fri, 9 May 2025 19:27:06 -0400 Subject: [PATCH] postgres: Add knobs for parallelism control. --- puppet/zulip/manifests/profile/postgresql.pp | 6 ++++++ .../postgresql/14/postgresql.conf.template.erb | 12 ++++++++++++ .../templates/postgresql/zulip.conf.template.erb | 12 ++++++++++++ 3 files changed, 30 insertions(+) diff --git a/puppet/zulip/manifests/profile/postgresql.pp b/puppet/zulip/manifests/profile/postgresql.pp index 1227e08577..6263ac3989 100644 --- a/puppet/zulip/manifests/profile/postgresql.pp +++ b/puppet/zulip/manifests/profile/postgresql.pp @@ -14,6 +14,12 @@ class zulip::profile::postgresql { $shared_buffers = zulipconf('postgresql', 'shared_buffers', sprintf('%dMB', $total_postgres_memory_mb / 4)) $effective_cache_size = zulipconf('postgresql', 'effective_cache_size', sprintf('%dMB', $total_postgres_memory_mb * 3 / 4)) $maintenance_work_mem = zulipconf('postgresql', 'maintenance_work_mem', sprintf('%dMB', min(2048, $total_postgres_memory_mb / 8))) + + $max_worker_processes = zulipconf('postgresql', 'max_worker_processes', undef) + $max_parallel_workers_per_gather = zulipconf('postgresql', 'max_parallel_workers_per_gather', undef) + $max_parallel_workers = zulipconf('postgresql', 'max_parallel_workers', undef) + $max_parallel_maintenance_workers = zulipconf('postgresql', 'max_parallel_maintenance_workers', undef) + $wal_buffers = zulipconf('postgresql', 'wal_buffers', undef) $random_page_cost = zulipconf('postgresql', 'random_page_cost', undef) $effective_io_concurrency = zulipconf('postgresql', 'effective_io_concurrency', undef) diff --git a/puppet/zulip/templates/postgresql/14/postgresql.conf.template.erb b/puppet/zulip/templates/postgresql/14/postgresql.conf.template.erb index f8929de54b..ebbbd452d3 100644 --- a/puppet/zulip/templates/postgresql/14/postgresql.conf.template.erb +++ b/puppet/zulip/templates/postgresql/14/postgresql.conf.template.erb @@ -835,6 +835,18 @@ random_page_cost = <%= @random_page_cost %> <% unless @effective_io_concurrency.nil? -%> effective_io_concurrency = <%= @effective_io_concurrency %> <% end -%> +<% unless @max_worker_processes.nil? -%> +max_worker_processes = <%= @max_worker_processes %> +<% end -%> +<% unless @max_parallel_workers_per_gather.nil? -%> +max_parallel_workers_per_gather = <%= @max_parallel_workers_per_gather %> +<% end -%> +<% unless @max_parallel_workers.nil? -%> +max_parallel_workers = <%= @max_parallel_workers %> +<% end -%> +<% unless @max_parallel_maintenance_workers.nil? -%> +max_parallel_maintenance_workers = <%= @max_parallel_maintenance_workers %> +<% end -%> <% unless @listen_addresses.nil? -%> listen_addresses = <%= @listen_addresses %> diff --git a/puppet/zulip/templates/postgresql/zulip.conf.template.erb b/puppet/zulip/templates/postgresql/zulip.conf.template.erb index c6e2ef3244..0ae01c60d3 100644 --- a/puppet/zulip/templates/postgresql/zulip.conf.template.erb +++ b/puppet/zulip/templates/postgresql/zulip.conf.template.erb @@ -39,6 +39,18 @@ random_page_cost = <%= @random_page_cost %> <% unless @effective_io_concurrency.nil? -%> effective_io_concurrency = <%= @effective_io_concurrency %> <% end -%> +<% unless @max_worker_processes.nil? -%> +max_worker_processes = <%= @max_worker_processes %> +<% end -%> +<% unless @max_parallel_workers_per_gather.nil? -%> +max_parallel_workers_per_gather = <%= @max_parallel_workers_per_gather %> +<% end -%> +<% unless @max_parallel_workers.nil? -%> +max_parallel_workers = <%= @max_parallel_workers %> +<% end -%> +<% unless @max_parallel_maintenance_workers.nil? -%> +max_parallel_maintenance_workers = <%= @max_parallel_maintenance_workers %> +<% end -%> <% if @s3_backups_bucket != '' -%> # WAL backups to S3 (may also be used for replication)