Libvirt CPU affinity error
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
libvirt (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
Vivid |
Fix Released
|
High
|
Unassigned | ||
nova (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Vivid |
Confirmed
|
Undecided
|
Unassigned |
Bug Description
=======
SRU Justification
1. Impact: VMs fail to launch with TCG (non-kvm-
2. Stable fix: cherrypick a patch from upstream.
3. Regression potential: this only slightly relaxes the check for multiple cpus, and is a cherrpyick from upstream. It therefore should not introduce any regressions.
4. Test case: See below - or simply attempt to launch a VM with multiple cpus on non-accelerated qemu.
=======
I'm testing the Kilo packages from the cloud archive staging PPA on 14.04 and cannot launch a VM due to a Libvirt CPU affinity error. I'm using QEMU because my environment resides on cloud servers.
Package versions:
ii nova-common 1:2015.
ii nova-compute 1:2015.
ii nova-compute-kvm 1:2015.
ii nova-compute-
ii python-nova 1:2015.
ii python-novaclient 1:2.22.
ii libvirt-bin 1.2.12-
ii libvirt0 1.2.12-
Content of nova compute logs while attempting to launch an CirrOS/m1.tiny instance :
2015-03-31 23:00:07.106 31118 INFO nova.compute.
2015-03-31 23:00:07.180 31118 INFO nova.compute.claims [-] [instance: 0551a285-
2015-03-31 23:00:07.181 31118 INFO nova.compute.claims [-] [instance: 0551a285-
2015-03-31 23:00:07.181 31118 INFO nova.compute.claims [-] [instance: 0551a285-
2015-03-31 23:00:07.182 31118 INFO nova.compute.claims [-] [instance: 0551a285-
2015-03-31 23:00:07.182 31118 INFO nova.compute.claims [-] [instance: 0551a285-
2015-03-31 23:00:07.206 31118 INFO nova.compute.claims [-] [instance: 0551a285-
2015-03-31 23:00:07.295 31118 INFO nova.scheduler.
2015-03-31 23:00:07.407 31118 INFO nova.scheduler.
2015-03-31 23:00:07.574 31118 INFO nova.virt.
2015-03-31 23:00:07.819 31118 INFO nova.scheduler.
2015-03-31 23:00:07.907 31118 INFO nova.virt.
2015-03-31 23:00:10.902 31118 ERROR nova.virt.
<name>
<uuid>
<metadata>
<nova:instance xmlns:nova="http://
<nova:package version=
<
<
<nova:flavor name="m1.tiny">
<
<nova:owner>
<nova:user uuid="f214e083a
</nova:owner>
<nova:root type="image" uuid="38047887-
</nova:
</metadata>
<memory unit='KiB'
<currentMemory unit='KiB'
<vcpu placement='static' cpuset=
<cputune>
<shares>
</cputune>
<sysinfo type='smbios'>
<system>
<entry name='manufactu
<entry name='product'
<entry name='version'
<entry name='serial'
<entry name='uuid'
</system>
</sysinfo>
<os>
<type arch='x86_64' machine=
<boot dev='hd'/>
<smbios mode='sysinfo'/>
</os>
<features>
<acpi/>
<apic/>
</features>
<cpu mode='host-model'>
<model fallback='allow'/>
<topology sockets='1' cores='1' threads='1'/>
</cpu>
<clock offset='utc'/>
<on_poweroff>
<on_reboot>
<on_crash>
<devices>
<emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>
<controller type='usb' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
<controller type='pci' index='0' model='pci-root'/>
<interface type='bridge'>
<mac address=
<source bridge=
<target dev='tap4d42f32
<model type='virtio'/>
<driver name='qemu'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='file'>
<source path='/
<target port='0'/>
</serial>
<serial type='pty'>
<target port='1'/>
</serial>
<console type='file'>
<source path='/
<target type='serial' port='0'/>
</console>
<input type='tablet' bus='usb'/>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0' keymap='en-us'>
<listen type='address' address='0.0.0.0'/>
</graphics>
<video>
<model type='cirrus' vram='16384' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
<stats period='10'/>
</memballoon>
</devices>
</domain>
2015-03-31 23:00:10.903 31118 ERROR nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.903 31118 TRACE nova.compute.
2015-03-31 23:00:10.907 31118 INFO nova.compute.
2015-03-31 23:00:10.913 31118 INFO nova.virt.
2015-03-31 23:00:10.936 31118 INFO nova.virt.
2015-03-31 23:00:10.937 31118 INFO nova.virt.
2015-03-31 23:00:11.053 31118 INFO nova.scheduler.
Changed in nova (Ubuntu): | |
status: | Incomplete → New |
Changed in libvirt (Ubuntu): | |
status: | Confirmed → Fix Released |
importance: | Undecided → High |
Changed in libvirt (Ubuntu Vivid): | |
importance: | Undecided → High |
description: | updated |
This guest XML would be expected to fail if the guest is running on a host that is using qemu w/o kvm acceleration:
<vcpu placement='static' cpuset= '0-1'>1< /vcpu>
...as qemu does not support pinning when kvm isn't available. What's not clear to me is why the Ubuntu version would be adding this line since it sounds like master/kilo-3 is behaving correctly per the spec (only adding these lines where the user explicitly requests direct pinning of CPUs on the image or flavor [1]).
[1] http:// specs.openstack .org/openstack/ nova-specs/ specs/juno/ approved/ virt-driver- cpu-pinning. html