diff --git a/defaults/main.yml b/defaults/main.yml index 7c3b0f18..51148541 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -447,6 +447,10 @@ neutron_quota_vip: 10 # If ``neutron_metadata_workers`` is unset the system will use half the number of available VCPUs to # compute the number of api workers to use. # neutron_metadata_workers: 16 + +## Cap the maximun number of threads / workers when a user value is unspecified. +neutron_api_threads_max: 16 + neutron_metadata_backlog: 4096 ## Auth diff --git a/releasenotes/notes/cap-workers-fc70b4f8586ba1a5.yaml b/releasenotes/notes/cap-workers-fc70b4f8586ba1a5.yaml new file mode 100644 index 00000000..6fc35e2d --- /dev/null +++ b/releasenotes/notes/cap-workers-fc70b4f8586ba1a5.yaml @@ -0,0 +1,6 @@ +--- +features: + - The number of worker threads for neutron will now be capped at 16 unless + a specific value is specified. Previously, the calculated number of workers + could get too high on systems with a large number of processors. This was + particularly evident on POWER systems. diff --git a/templates/neutron.conf.j2 b/templates/neutron.conf.j2 index 058e2664..fea7d7f6 100644 --- a/templates/neutron.conf.j2 +++ b/templates/neutron.conf.j2 @@ -1,6 +1,6 @@ # {{ ansible_managed }} -{% set _api_threads = ansible_processor_vcpus|default(2) // 2 %} +{% set _api_threads = [ansible_processor_vcpus|default(2) // 2, neutron_api_threads_max] | min %} {% set api_threads = _api_threads if _api_threads > 0 else 1 %} # General, applies to all host groups