nova libvirt driver does not handle resizing with 'hw:cpu_policy' flag
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
New
|
Undecided
|
Unassigned |
Bug Description
We conduced a series of resize checks on instances with/without the CPU pinning parameters provided as part of this blueprint:
http://
This is related to 1417667 (https:/
---
# Testing Configuration
Testing was conducted on a single-node, Fedora 21-based (3.17.8-
* no-pinning ('hw:cpu_
* pinning ('hw:cpu_
* pinning-no-numa ('hw:cpu_
# Results
## no pinning -> pinning
Doesn't work. Attempting to do this results in little difference in the output XML.
Before:
<vcpu placement='static' cpuset=
After:
<vcpu placement='static' cpuset=
STEP: Create a VM with a 'no-pinning' flavor. Dump XML with virsh. Resize and confirm to 'pinning' flavor. Dump XML with virsh.
## no pinning -> pinning (without available CPUs)
Doesn't work (due to above). Pinning does not occur so there is no reason for failure.
STEPS: Create three 10-vcpu VMs with a 'pinning' flavor. Create two 10-vcpu VMs with a 'no-pinning' flavor. Resize and confirm one of latter to 'pinning' flavor. Ensure failure.
## pinning w/ no numa topology -> pinning with numa topology
Doesn't work. There is only one (unrelated) change in the output XML:
Before:
<disk type='file' device='disk'>
...
<format type='raw'/>
<source file='/
After:
<disk type='file' device='disk'>
...
STEPS: Create a VM with a 'pinning-no-numa' flavor. Dump XML with virsh. Resize and confirm to 'pinning' flavor. Dump XML with virsh.
## pinning -> no pinning
Doesn't work. Attempting to do this results in no serious change in the output XML. Here's the important elements of the XML for a resized (pinning -> no pinning) instance:
<vcpu placement=
<cputune>
<vcpupin vcpu='0' cpuset='17'/>
<vcpupin vcpu='1' cpuset='37'/>
<vcpupin vcpu='2' cpuset='18'/>
<vcpupin vcpu='3' cpuset='38'/>
<vcpupin vcpu='4' cpuset='19'/>
<vcpupin vcpu='5' cpuset='39'/>
<vcpupin vcpu='6' cpuset='33'/>
<vcpupin vcpu='7' cpuset='13'/>
<vcpupin vcpu='8' cpuset='34'/>
<vcpupin vcpu='9' cpuset='14'/>
</cputune>
<numatune>
<memory mode='strict' nodeset='1'/>
<memnode cellid='0' mode='strict' nodeset='1'/>
</numatune>
<cpu>
<topology sockets='5' cores='1' threads='2'/>
<numa>
<cell id='0' cpus='0-9' memory='4194304' unit='KiB'/>
</numa>
</cpu>
Versus the unresized, no pinning instance:
<vcpu placement='static' cpuset=
<cputune>
<shares>
</cputune>
<cpu>
<topology sockets='10' cores='1' threads='1'/>
</cpu>