Resource Tracker failed to update usage in case numa topology conflict happen
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
In Progress
|
Undecided
|
leehom |
Bug Description
Let me describe when this bug will happen first.
Assume there are 2 running VMs they are booted with flavor that contain metadata 'hw:cpu_
And assume some of these 2 VMs' vCPUs are pinned to the same physical CPU.
Let's say VM1 pinned to {"0": 50, "1": 22, "2": 49, "3": 21}
and VM2 pinned to {"0": 27, "1": 55, "2": 50, "3": 22}
Refer to patch https:/
By default live migration is disabled if instance has a numa topology. But can still be enabled by configure CONF.workaround
So when I do live migration to these 2 VMs at the same time what will happen?
In my case, I will encounter 3 problems.
#1. Because numa related information is not reported to placement. Placement API will return same candidates, and as schedule action is async so there is probability that VM1 and VM2 will pick the same dest host. In my case, these 2 VMs both passed scheduler and picked the same host.
#2. And then as BP numa-aware-
#3. And as VM1 and VM2 have numa-topology conflict, we will hit the third problem. That is as the title says resource tracker failed to update usage. That is because when call _update_usage in RT, it will eventually call numa_usage_
nova.compute.
` nova.virt.
` nova.virt.
And numa_usage_
And in pin_cpus, pin_cpus_
So I think, to completed solve problem with VMs has a numa-topology.
For
Problem #1, we need to report numa topology to placement API as well, and take numa-topology into account when get candidates from placement.
Problem #2,we need to continue complete BP numa-aware-
Problem #3, numa_usage_
In scheduler numa_usage_
Above is the summary about the live migration issue in my mind.
And this bug is focused on solving the problem#3.
Just to make sure I'm following, since we don't claim resources in the resource tracker (yet) for NUMA during live migration on the dest host, both VMs landed there and are running there but with conflicting pinned CPUs and that's what causes the update_ available_ resource periodic task on the destination compute host to fail, until one of those VMs is deleted or migrated elsewhere, is that correct?