nova libvirt driver assumes libvirt support for CPU pinning
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
Fix Released
|
High
|
Stephen Finucane |
Bug Description
CPU pinning support was implemented as part of this blueprint:
http://
However, CPU pinning support is broken in some libvirt versions (summarized below), resulting in exceptions when attempting to schedule instances with the 'hw:cpu_policy' flavor key.
We should add a libvirt version test against known broken versions and use that to determine whether or not to support the flavor keys.
This is somewhat related to #1422775 ("nova libvirt driver assumes qemu support for NUMA pinning").
---
# Testing Configuration
Testing was conducted in a container which provided a single-node, Fedora 21-based (3.17.8-
# Results
The results are as follows:
versions status
-------- ------
1.2.9 ok
1.2.9.1 ok
1.2.9.2 fail
1.2.10 fail
1.2.11 ok
1.2.12 ok
v1.2.9.2 is broken by this (backported) patch:
https:/
This can be seen as commit
e226772 (qemu: fix domain startup failing with 'strict' mode in numatune)
v1.2.10 inherits is broken at checkout but can be fixed by applying these three patches (yes, one of these broke v1.2.9.2 - the irony is not lost on me):
[0/3] https:/
- [1/3] https:/
- [2/3] https:/
- [3/3] https:/
# Error logs
v1.2.9.2 produces the following exception:
Traceback (most recent call last):
File "/opt/stack/
yield resources
File "/opt/stack/
File "/opt/stack/
File "/opt/stack/
File "/opt/stack/
File "/usr/lib/
File "/opt/stack/
File "/usr/lib/
result = proxy_call(
File "/usr/lib/
rv = execute(f, *args, **kwargs)
File "/usr/lib/
File "/usr/lib/
rv = meth(*args, **kwargs)
File "/usr/lib64/
if ret == -1: raise libvirtError ('virDomainCrea
libvirtError: Failed to create controller cpu for group: No such file or directory
v1.2.10 produces the following exception:
Traceback (most recent call last):
File "/opt/stack/
yield resources
File "/opt/stack/
File "/opt/stack/
File "/opt/stack/
File "/opt/stack/
File "/usr/lib/
File "/opt/stack/
File "/usr/lib/
result = proxy_call(
File "/usr/lib/
rv = execute(f, *args, **kwargs)
File "/usr/lib/
File "/usr/lib/
rv = meth(*args, **kwargs)
File "/usr/lib64/
if ret == -1: raise libvirtError ('virDomainCrea
libvirtError: Unable to write to '/sys/fs/
Changed in nova: | |
assignee: | nobody → Radoslaw Smigielski (radoslaw-smigielski) |
tags: | removed: kilo-rc-potential |
Changed in nova: | |
status: | Fix Committed → Fix Released |
Changed in nova: | |
milestone: | kilo-rc1 → 2015.1.0 |
Because this should *hopefully* be a small conditional fix, I think it should end up on the RC list.