Compute manager to use thread pools selectively
This changes the thread pool usage of the ComputeManager to go through the concurrency mode aware util functions. The concurrent live migration pool had a seemingly unlimited option when configured with value 0, but in reality GreenThreadPool has a default worker size of 1000. In reality it is almost never right to have more than one live migration running concurrently. Also with native threading having 1000 worker is just too costly. So we decided to deprecate the value 0 and changed the implementation of unlimited to mean 5 threads in native threading mode. We kept the 1000 greenthread in eventlet mode for backward compatibility. The _sync_power_states periodic task also spawn tasks for each instance to be synced. As it uses a shared data structure across these tasks and the caller a lock is needed to avoid race conditions. Also the default pool size is 1000 for these tasks in our configuration. That would use a lot of memory on a busy host in native threading mode. So we changed the default value from 1000 to 5. Change-Id: I9567d5fabdf086b5d0493103d9f6bde4f66af387 Signed-off-by: Balazs Gibizer <gibi@redhat.com>
This commit is contained in:
@@ -43,7 +43,7 @@ Tunables for the native threading mode
|
||||
As native threads are more expensive resources than greenthreads Nova provides
|
||||
a set of configuration options to allow fine tuning the deployment based on
|
||||
load and resource constraints. The default values are selected to support a
|
||||
basic, small deployment without consuming substantially more memory resources,
|
||||
basic, small deployment without consuming substantially more memory resources,
|
||||
than the legacy Eventlet mode. Increasing the size of the below thread pools
|
||||
means that the given service will consume more memory but will also allow more
|
||||
tasks to be executed concurrently.
|
||||
@@ -75,6 +75,23 @@ tasks to be executed concurrently.
|
||||
|
||||
This option is relevant to every nova service using ``nova.utils.spawn()``.
|
||||
|
||||
* :oslo.config:option:`sync_power_state_pool_size`: Used by the
|
||||
nova-compute service to sync the power state of each instance on the host
|
||||
between the hypervisor and the DB. Since nova 33.0.0 (2026.1 Gazpacho) the
|
||||
default value of this option is changed from 1000 to 5 to have a sane default
|
||||
in native threading mode. Increasing this value in native threading mode
|
||||
increases the nova-compute memory consumption on a host that has many
|
||||
instances.
|
||||
|
||||
* :oslo.config:option:`max_concurrent_live_migrations`: Used by the
|
||||
nova-compute service to limit the number of outgoing concurrent live
|
||||
migrations from the host. It is implemented via a thread pool. So increasing
|
||||
the the number of concurrent live migrations will increase the nova-compute
|
||||
service memory consumption in native threading mode. It is almost always
|
||||
a bad idea to use change this config option from its default value, 1. If
|
||||
more performant live migration is needed then enable
|
||||
:oslo.config:option:`libvirt.live_migration_parallel_connections` instead.
|
||||
|
||||
Seeing the usage of the pools
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
Reference in New Issue
Block a user