Actually the proposed fix will break for NUMA topologies where host cell ID that the instance cell is pinned to is not in increasing order. The reason for this is the following loop
As it will go through the host cells (always in ascending order, and find instance cells that match (may not be in ascending order depending on how the fitting logic and usage of the host) but we simply append memnodes so they may end up in the wrong order when we hit the normalization loop:
Actually the proposed fix will break for NUMA topologies where host cell ID that the instance cell is pinned to is not in increasing order. The reason for this is the following loop
https:/ /github. com/openstack/ nova/blob/ 4715dd9b402137b a16c8afa0519aca 2eccb9c2cf/ nova/virt/ libvirt/ driver. py#L3509
As it will go through the host cells (always in ascending order, and find instance cells that match (may not be in ascending order depending on how the fitting logic and usage of the host) but we simply append memnodes so they may end up in the wrong order when we hit the normalization loop:
https:/ /github. com/openstack/ nova/blob/ 4715dd9b402137b a16c8afa0519aca 2eccb9c2cf/ nova/virt/ libvirt/ driver. py#L3553
Thus assigning CPUs to the correct host numa node, but force all memory to the wrong one. Ouch!