← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1442546] [NEW] Nova compute should work for non-continous pCPUs with vcpu pinning enabled.

 

Public bug reported:

Environment: Openstack Juno. (Same code in the master as well).
Physical machine doesn't have continuous blocks of cpu in online state. 
Online pCPUs are: 4,8 and 12.
vcpu pinning is enabled via the vcpu_pin_set attribute in /etc/nova/nova.conf
vcpu_pin_set="4,8,12"
The nova code in /nova/virt/libvirt/driver.py inside get_vcpu_total() is checking the length of available_ids from the nova.conf as:

if available_ids[-1] >= total_pcpus:
            raise exception.Invalid(_("Invalid vcpu_pin_set config, "
                                      "out of hypervisor cpu range."))

available_ids in this case contains [4,8,12]. 
The total pcpus count given by libvirt is 3 (number of on-line pcpus).
Hence the above check fails since it determines the total available CPUs as 12.

The available_ids[-1] can be replaced by len(available_ids) for this to work.
Nova should not expect the online CPUs to be continuous numbers always.
Filing a bug to address this.

** Affects: nova
     Importance: Undecided
     Assignee: Sudipta Biswas (sbiswas7)
         Status: New

** Changed in: nova
     Assignee: (unassigned) => Sudipta Biswas (sbiswas7)

-- 
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/1442546

Title:
  Nova compute should work for non-continous pCPUs with vcpu pinning
  enabled.

Status in OpenStack Compute (Nova):
  New

Bug description:
  Environment: Openstack Juno. (Same code in the master as well).
  Physical machine doesn't have continuous blocks of cpu in online state. 
  Online pCPUs are: 4,8 and 12.
  vcpu pinning is enabled via the vcpu_pin_set attribute in /etc/nova/nova.conf
  vcpu_pin_set="4,8,12"
  The nova code in /nova/virt/libvirt/driver.py inside get_vcpu_total() is checking the length of available_ids from the nova.conf as:

  if available_ids[-1] >= total_pcpus:
              raise exception.Invalid(_("Invalid vcpu_pin_set config, "
                                        "out of hypervisor cpu range."))

  available_ids in this case contains [4,8,12]. 
  The total pcpus count given by libvirt is 3 (number of on-line pcpus).
  Hence the above check fails since it determines the total available CPUs as 12.

  The available_ids[-1] can be replaced by len(available_ids) for this to work.
  Nova should not expect the online CPUs to be continuous numbers always.
  Filing a bug to address this.

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1442546/+subscriptions


Follow ups

References