yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #30664
[Bug 1438240] [NEW] nova libvirt driver does not handle resizing with 'hw:cpu_policy' flag
*** This bug is a duplicate of bug 1417667 ***
https://bugs.launchpad.net/bugs/1417667
Public bug reported:
We conduced a series of resize checks on instances with/without the CPU
pinning parameters provided as part of this blueprint:
http://specs.openstack.org/openstack/nova-specs/specs/juno/approved
/virt-driver-cpu-pinning.html
This is related to 1417667
(https://bugs.launchpad.net/nova/+bug/1417667).
---
# Testing Configuration
Testing was conducted on a single-node, Fedora 21-based
(3.17.8-300.fc21.x86_64) OpenStack instance (built with devstack). Three
flavors were created:
* no-pinning ('hw:cpu_policy=shared')
* pinning ('hw:cpu_policy=dedicated' and 'hw:numa-nodes=1')
* pinning-no-numa ('hw:cpu_policy=dedicated')
# Results
## no pinning -> pinning
Doesn't work. Attempting to do this results in little difference in the
output XML.
Before:
<vcpu placement='static' cpuset='10-19,30-39'>10</vcpu>
After:
<vcpu placement='static' cpuset='0-9,20-29'>10</vcpu>
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'>
...
<backingStore type='file' index='1'>
<format type='raw'/>
<source file='/opt/stack/data/nova/instances/_base/598e2b66ae396bb852a504ea4a7471df6b847f8b'/>
<backingStore/>
</backingStore>
After:
<disk type='file' device='disk'>
...
<backingStore/>
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='static'>10</vcpu>
<cputune>
<shares>10240</shares>
<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'/>
<emulatorpin cpuset='13-14,17-19,33-34,37-39'/>
</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='10-19,30-39'>10</vcpu>
<cputune>
<shares>10240</shares>
</cputune>
<cpu>
<topology sockets='10' cores='1' threads='1'/>
</cpu>
** Affects: nova
Importance: Undecided
Status: New
** Tags: libvirt
** Description changed:
We conduced a series of resize checks on instances with/without the CPU
pinning parameters provided as part of this blueprint:
- http://specs.openstack.org/openstack/nova-specs/specs/juno/approved
+ http://specs.openstack.org/openstack/nova-specs/specs/juno/approved
/virt-driver-cpu-pinning.html
---
# Testing Configuration
Testing was conducted on a single-node, Fedora 21-based
(3.17.8-300.fc21.x86_64) OpenStack instance (built with devstack). Three
flavors were created:
* no-pinning ('hw:cpu_policy=shared')
* pinning ('hw:cpu_policy=dedicated' and 'hw:numa-nodes=1')
* pinning-no-numa ('hw:cpu_policy=dedicated')
# Results
## no pinning -> pinning
Doesn't work. Attempting to do this results in little difference in the
output XML.
Before:
- <vcpu placement='static' cpuset='10-19,30-39'>10</vcpu>
+ <vcpu placement='static' cpuset='10-19,30-39'>10</vcpu>
After:
- <vcpu placement='static' cpuset='0-9,20-29'>10</vcpu>
+ <vcpu placement='static' cpuset='0-9,20-29'>10</vcpu>
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'>
- ...
- <backingStore type='file' index='1'>
- <format type='raw'/>
- <source file='/opt/stack/data/nova/instances/_base/598e2b66ae396bb852a504ea4a7471df6b847f8b'/>
- <backingStore/>
- </backingStore>
+ <disk type='file' device='disk'>
+ ...
+ <backingStore type='file' index='1'>
+ <format type='raw'/>
+ <source file='/opt/stack/data/nova/instances/_base/598e2b66ae396bb852a504ea4a7471df6b847f8b'/>
+ <backingStore/>
+ </backingStore>
After:
- <disk type='file' device='disk'>
- ...
- <backingStore/>
+ <disk type='file' device='disk'>
+ ...
+ <backingStore/>
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
- No. 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:
+ 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='static'>10</vcpu>
- <cputune>
- <shares>10240</shares>
- <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'/>
- <emulatorpin cpuset='13-14,17-19,33-34,37-39'/>
- </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>
+ <vcpu placement='static'>10</vcpu>
+ <cputune>
+ <shares>10240</shares>
+ <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'/>
+ <emulatorpin cpuset='13-14,17-19,33-34,37-39'/>
+ </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='10-19,30-39'>10</vcpu>
- <cputune>
- <shares>10240</shares>
- </cputune>
- <cpu>
- <topology sockets='10' cores='1' threads='1'/>
- </cpu>
+ <vcpu placement='static' cpuset='10-19,30-39'>10</vcpu>
+ <cputune>
+ <shares>10240</shares>
+ </cputune>
+ <cpu>
+ <topology sockets='10' cores='1' threads='1'/>
+ </cpu>
** Tags added: libvirt
--
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/1438240
Title:
nova libvirt driver does not handle resizing with 'hw:cpu_policy' flag
Status in OpenStack Compute (Nova):
New
Bug description:
We conduced a series of resize checks on instances with/without the
CPU pinning parameters provided as part of this blueprint:
http://specs.openstack.org/openstack/nova-
specs/specs/juno/approved/virt-driver-cpu-pinning.html
This is related to 1417667
(https://bugs.launchpad.net/nova/+bug/1417667).
---
# Testing Configuration
Testing was conducted on a single-node, Fedora 21-based
(3.17.8-300.fc21.x86_64) OpenStack instance (built with devstack).
Three flavors were created:
* no-pinning ('hw:cpu_policy=shared')
* pinning ('hw:cpu_policy=dedicated' and 'hw:numa-nodes=1')
* pinning-no-numa ('hw:cpu_policy=dedicated')
# Results
## no pinning -> pinning
Doesn't work. Attempting to do this results in little difference in
the output XML.
Before:
<vcpu placement='static' cpuset='10-19,30-39'>10</vcpu>
After:
<vcpu placement='static' cpuset='0-9,20-29'>10</vcpu>
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'>
...
<backingStore type='file' index='1'>
<format type='raw'/>
<source file='/opt/stack/data/nova/instances/_base/598e2b66ae396bb852a504ea4a7471df6b847f8b'/>
<backingStore/>
</backingStore>
After:
<disk type='file' device='disk'>
...
<backingStore/>
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='static'>10</vcpu>
<cputune>
<shares>10240</shares>
<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'/>
<emulatorpin cpuset='13-14,17-19,33-34,37-39'/>
</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='10-19,30-39'>10</vcpu>
<cputune>
<shares>10240</shares>
</cputune>
<cpu>
<topology sockets='10' cores='1' threads='1'/>
</cpu>
To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1438240/+subscriptions
Follow ups
References