nova/releasenotes/notes/bug-1910466-max-vcpu-topologies-with-numa-9a9ceb1b0fc7c33d.yaml
Sean Mooney 387823b36d Fix max cpu topologies with numa affinity
Nova has never supported specifying per numa node
cpu toplogies. Logically the  cpu toplogy of a guest
is independent of its numa toplogy and there is no
way to model different cpu toplogies per numa node
or implement that in hardware.

The presence of the code in nova that allowed the generation
of these invalid configuration has now been removed as it
broke the automatic selection of cpu topologies based
on hw:max_[cpus|sockets|threads] flavor and image properties.

This change removed the incorrect code and related unit
tests with assert nova could generate invalid topologies.

Closes-Bug: #1910466
Change-Id: Ia81a0fdbd950b51dbcc70c65ba492549a224ce2b
2021-06-18 12:34:22 +01:00

24 lines
1.2 KiB
YAML

---
fixes:
- |
The nova libvirt driver supports two independent features, virtual CPU
topologies and virtual NUMA topologies. Previously, when
``hw:cpu_max_sockets``, ``hw:cpu_max_cores`` and ``hw:cpu_max_threads``
were specified for pinned instances (``hw:cpu_policy=dedicated``)
without explicit ``hw:cpu_sockets``, ``hw:cpu_cores``, ``hw:cpu_threads``
extra specs or their image equivalent, nova failed to generate a valid
virtual CPU topology. This has now been fixed and it is now possible to
use max CPU constraints with pinned instances.
e.g. a combination of ``hw:numa_nodes=2``, ``hw:cpu_max_sockets=2``,
``hw:cpu_max_cores=2``, ``hw:cpu_max_threads=8`` and
``hw:cpu_policy=dedicated`` can now generate a valid topology using
a flavor with 8 vCPUs.
upgrade:
- |
As part of the fix for bug 1910466, code that attempted to optimize VM CPU
thread assignment based on the host CPU topology as it was determined
to be buggy, undocumented and rejected valid virtual CPU topologies while
also producing different behavior when CPU pinning was enabled vs disabled.
The optimization may be reintroduced in the future with a more generic
implementation that works for both pinned and unpinned VMs.