arm64: Migration pre-check error: CPU doesn't have compatibility.

Bug #1741319 reported by dann frazier
12
This bug affects 2 people
Affects Status Importance Assigned to Milestone
OpenStack Compute (nova)
Confirmed
Low
Unassigned
OpenStack Nova Compute Charm
Incomplete
Medium
Unassigned

Bug Description

Pike/openstack-base running on identical servers (HiSilicon D05):

ubuntu@ike-hisi-maas:~$ openstack server migrate --live strong-emu dannf
Migration pre-check error: CPU doesn't have compatibility.

XML error: Missing CPU model name

Refer to http://libvirt.org/html/libvirt-libvirt-host.html#virCPUCompareResult (HTTP 400) (Request-ID: req-c5ec9320-d111-40b7-af0e-d8414df3925c)

Revision history for this message
James Page (james-page) wrote :

My initial hunch was something was wonky with the cpu configuration in nova; however:

        if config('cpu-mode'):
            ctxt['cpu_mode'] = config('cpu-mode')
        elif ctxt['arch'] in ('ppc64el', 'ppc64le', 'aarch64'):
            ctxt['cpu_mode'] = 'host-passthrough'

reveals that for aarch64, we actually do a direct host-passthrough so for identical machines the CPU features should be a 100% match; I'm wondering whether something is not exposed correctly in libvirt on aarch64 which nova is looking for for the pre-flight checks.

Revision history for this message
James Page (james-page) wrote :

"Missing CPU model name" is bubbling up from libvirt's pre-migration checks.

Revision history for this message
James Page (james-page) wrote :

Dann - does this work in releases prior to pike? Reading the nova code, not a huge amount has changed in this area, so I'm wondering whether this is a bug somewhere in the virt stack @ pike.

Changed in charm-nova-compute:
status: New → Incomplete
importance: Undecided → Medium
Revision history for this message
dann frazier (dannf) wrote :

James - I never tried it with earlier releases. However, prior to pike, there was the additional reason that QEMU didn't yet support save/restore of these guests at all. See LP: #1710019.

Revision history for this message
Jason Hobbs (jason-hobbs) wrote :
Revision history for this message
Andrew McLeod (admcleod) wrote :

The issue is that the XML does not contain the CPU model type, following is what is actually being passed.

https://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#L6337

This is the actual XML provided on an arm64 deploy (can be confirmed using "virsh cpu-compare file.xml" -

<cpu>
  <arch>aarch64</arch>
  <topology sockets="1" cores="48" threads="1"/>
</cpu>

more logs: https://pastebin.canonical.com/209211/

If you insert <model>anything</model> then cpu-compare works, e.g.

https://pastebin.canonical.com/209216/

However, https://github.com/openstack/nova/blob/f94c728bdddc9d1d3e3ae5f8f34b0111b9168bc9/releasenotes/notes/aarch64-set-proper-cpu-mode-8455bad7d69dc6fd.yaml indicates that no host-model will be passed.

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

While I agree for cpu-compare needing a cpu to compare.
I happen to migrate guests like http://paste.ubuntu.com/26530819/ all the time which have none as well.

So there must be way to pass it even with no cpu model is defined.

Revision history for this message
Marcin Juszkiewicz (hrw) wrote :

aarch64 does not have cpu_model = "host-model" funtionality which would be required for it.

There is no sane way of knowing how cpu1 compare to cpu2 yet.

Revision history for this message
Sylvain Bauza (sylvain-bauza) wrote :

Since Aarch64 architectures doesn't provide CPU models, but since we compare CPU models when migrating, that's why we have that issue.

I think tacking that bug requires more than a single bugfix and is probably a feature, but I leave that bug open for records, and we'll see how to address that in the future.

Changed in nova:
status: New → Confirmed
importance: Undecided → Low
Revision history for this message
Sylvain Bauza (sylvain-bauza) wrote :
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.