← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1602814] [NEW] hyperthreading bug in NUMATopologyFilter

 

Public bug reported:

I recently ran into an issue where I was trying to boot an instance with
8 vCPUs, with hw:cpu_policy=dedicated.  The host had 8 pCPUs available,
but they were a mix of siblings and non-siblings.

In virt.hardware._pack_instance_onto_cores(), the _get_pinning()
function seems to be the culprit.  It was called with the following
inputs:

(Pdb) threads_no
1
(Pdb) sibling_set
[CoercedSet([63]), CoercedSet([49]), CoercedSet([48]), CoercedSet([50]), CoercedSet([59, 15]), CoercedSet([18, 62])]
(Pdb) instance_cell.cpuset
CoercedSet([0, 1, 2, 3, 4, 5, 6, 7])

As we can see, we are looking for 8 vCPUs, and there are 8 pCPUs
available.  However, when we call _get_pinning() it doesn't give us a
mapping:

> /usr/lib/python2.7/site-packages/nova/virt/hardware.py(899)_pack_instance_onto_cores()
-> pinning = _get_pinning(threads_no, sibling_set,
(Pdb) n
> /usr/lib/python2.7/site-packages/nova/virt/hardware.py(900)_pack_instance_onto_cores()
-> instance_cell.cpuset)
(Pdb) n
> /usr/lib/python2.7/site-packages/nova/virt/hardware.py(901)_pack_instance_onto_cores()
-> if pinning:
(Pdb) pinning


This is a bug, if we haven't specified anything regarding hyperthreading then we should be able to run with a mix of siblings and non-siblings.

** Affects: nova
     Importance: Undecided
         Status: New


** Tags: compute numa scheduler

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

Title:
  hyperthreading bug in NUMATopologyFilter

Status in OpenStack Compute (nova):
  New

Bug description:
  I recently ran into an issue where I was trying to boot an instance
  with 8 vCPUs, with hw:cpu_policy=dedicated.  The host had 8 pCPUs
  available, but they were a mix of siblings and non-siblings.

  In virt.hardware._pack_instance_onto_cores(), the _get_pinning()
  function seems to be the culprit.  It was called with the following
  inputs:

  (Pdb) threads_no
  1
  (Pdb) sibling_set
  [CoercedSet([63]), CoercedSet([49]), CoercedSet([48]), CoercedSet([50]), CoercedSet([59, 15]), CoercedSet([18, 62])]
  (Pdb) instance_cell.cpuset
  CoercedSet([0, 1, 2, 3, 4, 5, 6, 7])

  As we can see, we are looking for 8 vCPUs, and there are 8 pCPUs
  available.  However, when we call _get_pinning() it doesn't give us a
  mapping:

  > /usr/lib/python2.7/site-packages/nova/virt/hardware.py(899)_pack_instance_onto_cores()
  -> pinning = _get_pinning(threads_no, sibling_set,
  (Pdb) n
  > /usr/lib/python2.7/site-packages/nova/virt/hardware.py(900)_pack_instance_onto_cores()
  -> instance_cell.cpuset)
  (Pdb) n
  > /usr/lib/python2.7/site-packages/nova/virt/hardware.py(901)_pack_instance_onto_cores()
  -> if pinning:
  (Pdb) pinning

  
  This is a bug, if we haven't specified anything regarding hyperthreading then we should be able to run with a mix of siblings and non-siblings.

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