From 9bbe02e9a43c2f3f9b828903f50b04ce254e8c21 Mon Sep 17 00:00:00 2001 From: Ravi Gummadi Date: Wed, 22 Feb 2017 07:26:27 -0500 Subject: [PATCH] Cap the number of worker threads Users can configure the number of worker threads however when it's not specified the calculated number of workers can get too large on hosts with a large number of CPUs. Change-Id: I86990deffcf9c29d39190defb0e2178a39de2aba --- defaults/main.yml | 4 ++++ .../notes/capping_ceilometer_workers-80a768e3aaed0aec.yaml | 6 ++++++ templates/ceilometer.conf.j2 | 7 ++----- 3 files changed, 12 insertions(+), 5 deletions(-) create mode 100644 releasenotes/notes/capping_ceilometer_workers-80a768e3aaed0aec.yaml diff --git a/defaults/main.yml b/defaults/main.yml index b6b27d44..8684796e 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -108,6 +108,10 @@ ceilometer_service_in_ldap: false # ceilometer_collector_workers: 1 # ceilometer_notification_workers: 1 +## Cap the maximum number of threads / workers when a user value is unspecified. +ceilometer_api_threads_max: 16 +ceilometer_api_threads: "{{ [[ansible_processor_vcpus|default(2) // 2, 1] | max, ceilometer_api_threads_max] | min }}" + # Enable/Disable Ceilometer per service glance_ceilometer_enabled: false nova_ceilometer_enabled: false diff --git a/releasenotes/notes/capping_ceilometer_workers-80a768e3aaed0aec.yaml b/releasenotes/notes/capping_ceilometer_workers-80a768e3aaed0aec.yaml new file mode 100644 index 00000000..e8cc2021 --- /dev/null +++ b/releasenotes/notes/capping_ceilometer_workers-80a768e3aaed0aec.yaml @@ -0,0 +1,6 @@ +--- +features: + - Capping the default value for the variables + ``ceilometer_api_workers`` and ``ceilometer_notification_workers`` to + 16 when the user doesn't configure these variables. Default value is half + the number of vCPUs available on the machine with a capping value of 16. diff --git a/templates/ceilometer.conf.j2 b/templates/ceilometer.conf.j2 index fa32900e..fc051314 100644 --- a/templates/ceilometer.conf.j2 +++ b/templates/ceilometer.conf.j2 @@ -1,8 +1,5 @@ #{{ ansible_managed}} -{% set _workers = ansible_processor_vcpus|default(2) // 2 %} -{% set workers = _workers if _workers > 0 else 1 %} - [DEFAULT] # Disable stderr logging use_stderr = False @@ -33,7 +30,7 @@ rabbit_use_ssl = {{ ceilometer_rabbitmq_use_ssl }} [api] gnocchi_is_enabled = {{ ceilometer_gnocchi_enabled | bool }} -workers = {{ ceilometer_api_workers | default(workers) }} +workers = {{ ceilometer_api_workers | default(ceilometer_api_threads) }} port = 8777 [collector] @@ -44,7 +41,7 @@ batch_timeout = 5 {% endif %} [notification] -workers = {{ ceilometer_notification_workers | default(workers) }} +workers = {{ ceilometer_notification_workers | default(ceilometer_api_threads) }} store_events = {{ not ceilometer_gnocchi_enabled | bool }} # Notification queues to listen on