** Also affects: charm-nova-compute/yoga
   Importance: Undecided
       Status: New

** Also affects: charm-nova-compute/2023.1
   Importance: Undecided
       Status: New

** Also affects: charm-nova-compute/zed
   Importance: Undecided
       Status: New

** Also affects: charm-nova-compute/2023.2
   Importance: Undecided
       Status: New

** Changed in: charm-nova-compute/2024.1
       Status: In Progress => New

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/2039803

Title:
  compareHypervisorCPU() incompatibility during live migration

Status in OpenStack Nova Compute Charm:
  In Progress
Status in OpenStack Nova Compute Charm 2023.1 series:
  New
Status in OpenStack Nova Compute Charm 2023.2 series:
  New
Status in OpenStack Nova Compute Charm 2024.1 series:
  New
Status in OpenStack Nova Compute Charm yoga series:
  New
Status in OpenStack Nova Compute Charm zed series:
  New
Status in OpenStack Compute (nova):
  In Progress

Bug description:
  Description
  ===========
  Live migration fails with 

  Refer to http://libvirt.org/html/libvirt-libvirt-host.html#virCPUCompareResult
  2023-10-17 08:28:15.301 2 ERROR oslo_messaging.rpc.server Traceback (most 
recent call last):
  2023-10-17 08:28:15.301 2 ERROR oslo_messaging.rpc.server   File 
"/usr/lib/python3.9/site-packages/nova/virt/libvirt/driver.py", line 9636, in 
check_can_live_migrate_destination
  2023-10-17 08:28:15.301 2 ERROR oslo_messaging.rpc.server     
self._compare_cpu(None, source_cpu_info, instance)
  2023-10-17 08:28:15.301 2 ERROR oslo_messaging.rpc.server   File 
"/usr/lib/python3.9/site-packages/nova/virt/libvirt/driver.py", line 10013, in 
_compare_cpu
  2023-10-17 08:28:15.301 2 ERROR oslo_messaging.rpc.server     raise 
exception.InvalidCPUInfo(reason=m % {'ret': ret, 'u': u})
  2023-10-17 08:28:15.301 2 ERROR oslo_messaging.rpc.server 
nova.exception.InvalidCPUInfo: Unacceptable CPU info: CPU doesn't have 
compatibility.

  [...]

  2023-10-17 08:28:15.301 2 ERROR oslo_messaging.rpc.server   File 
"/usr/lib/python3.9/site-packages/nova/virt/libvirt/driver.py", line 9640, in 
check_can_live_migrate_destination
  2023-10-17 08:28:15.301 2 ERROR oslo_messaging.rpc.server     raise 
exception.MigrationPreCheckError(reason=e)
  2023-10-17 08:28:15.301 2 ERROR oslo_messaging.rpc.server 
nova.exception.MigrationPreCheckError: Migration pre-check error: Unacceptable 
CPU info: CPU doesn't have compatibility.

  
  If skip_cpu_compare_on_dest is set to True the the live migration succeeds. 
So the issue seems to be only in the check nova does and the hypervisors are 
actually compatible.

  
  Steps to reproduce
  ==================
  * boot a simple cirros VM
  * openstack server migrate --live --block-migration <vm>

  
  Environment
  ===========
  OpenStack: 2023.1.
  libvirt version: 9.5.0
  QEMU: 8.1.0
  Hypervisors: two centos stream 9 VMs with nested KVM enabled
  nova compute is configured with cpu_mode=host-model

  Triage
  ======

  
  During the pre_live_migration check running on the destination node nova sees 
that in the DB the guest has no vcpu_model set and therefore falls back to do 
host CPU model based comparison[1]. The host cpu_info used there is collected 
with the getCapabilities() from libvirt [2]. And in this system that returns 
SandyBridge. In the other hand the guest VM is running as Broadwell (note nova 
is configured with cpu_mode=host-model) and also virsh domcapabilities returns 
Broadwell as the host model.

  There are two reasons for the failure:
  1) nova uses getCapabilities() to determine the host CPU model but use the 
model from the domCapabilities for the guest VM using host-model. According to 
the libvirt maintainers nova should never use getCapabilities for anything any 
more.

  2) nova falls back to do a host CPU based comparison if the guest
  vcpu_model is not filled in the nova DB. But for live migration the
  guest CPU model should be available as the guest exists and running on
  the source node.

  
  [1] 
https://github.com/openstack/nova/blob/a869ab17c095cbff2c942ab94247b0c30723b230/nova/virt/libvirt/driver.py#L9960-L9975
  [2] 
https://github.com/openstack/nova/blob/a869ab17c095cbff2c942ab94247b0c30723b230/nova/virt/libvirt/host.py#L793-L796

To manage notifications about this bug go to:
https://bugs.launchpad.net/charm-nova-compute/+bug/2039803/+subscriptions


-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to