Stephen Finucane e344b3038a Don't filter out sibling sets with one core
libvirt collects and exposes information about the host just as it does
for guests. This information includes things like the host CPU topology.
Nova uses this information to, among other things, generate an instance
of 'nova.objects.numa.NUMACell' for each host NUMA cell. The 'siblings'
field for each of these objects is populated using a combination of the
siblings information exposed by libvirt minus the cores we've been told
not to use, via the nova-specific 'vcpu_pin_set' option.

On pretty much any standard (x86) machine, it would be exceedingly
unlikely to find an asymmetric topology like so:

  socket 0
    core 0
      thread 0  (CPU #0)
      thread 1  (CPU #2)
    core 1
      thread 0  (CPU #1)

(note the missing 'CPU 3').

However these do happen in nova's world and are perfectly valid, thanks
to the aforementioned 'vcpu_pin_set' option. Historically, once we've
generated this list of sibling sets needed for the 'siblings' field,
we've filtered out sets that contain less than two siblings (i.e. the
cores have no siblings, or CPU #1 in the above example). This would be a
fair assumption on normal hardware, where asymmetric topologies like the
above wouldn't exist, but it doesn't really make sense in this use case.
What we're trying to expose via the siblings attribute is the
relationships between cores: if no relationship exists, we should say as
much.

The code that populates the 'siblings' attribute is modified to no
longer exclude sibling sets with only one sibling. This allows us to
simplify code that was previously having to switch between the
'siblings' attribute and the flat 'cpuset' attribute. In addition, all
tests that use the 'NUMACell' object are updated to set the 'sibling'
attribute as it is now always set in "real" code. This ensures behavior
hasn't regressed.

Change-Id: I8982ab25338969cd98621f79b7fbec8af43d12c5
Partial-Bug: #1744965
2018-01-30 10:09:59 +00:00
2017-08-07 16:00:10 +01:00
2017-01-04 11:05:16 +00:00
2017-11-24 16:51:12 -05:00
2014-05-07 12:14:26 -07:00
2017-11-24 16:51:12 -05:00
2012-02-08 19:30:39 -08:00
2017-11-21 21:01:09 +01:00
2010-05-27 23:05:26 -07:00
2017-09-07 15:42:31 +02:00
2017-11-28 15:23:48 -05:00
2017-03-02 11:50:48 +00:00
2017-03-02 14:30:16 +08:00

========================
Team and repository tags
========================

.. image:: https://governance.openstack.org/badges/nova.svg
    :target: https://governance.openstack.org/reference/tags/index.html

.. Change things from this point on

OpenStack Nova
==============

OpenStack Nova provides a cloud computing fabric controller, supporting a wide
variety of compute technologies, including: libvirt (KVM, Xen, LXC and more),
Hyper-V, VMware, XenServer, OpenStack Ironic and PowerVM.

Use the following resources to learn more.

API
---

To learn how to use Nova's API, consult the documentation available online at:

- `Compute API Guide <https://developer.openstack.org/api-guide/compute/>`__
- `Compute API Reference <https://developer.openstack.org/api-ref/compute/>`__

For more information on OpenStack APIs, SDKs and CLIs in general, refer to:

- `OpenStack for App Developers <https://www.openstack.org/appdev/>`__
- `Development resources for OpenStack clouds
  <https://developer.openstack.org/>`__

Operators
---------

To learn how to deploy and configure OpenStack Nova, consult the documentation
available online at:

- `OpenStack Nova <https://docs.openstack.org/nova/>`__

In the unfortunate event that bugs are discovered, they should be reported to
the appropriate bug tracker. If you obtained the software from a 3rd party
operating system vendor, it is often wise to use their own bug tracker for
reporting problems. In all other cases use the master OpenStack bug tracker,
available at:

- `Bug Tracker <https://bugs.launchpad.net/nova>`__

Developers
----------

For information on how to contribute to Nova, please see the contents of the
CONTRIBUTING.rst.

Any new code must follow the development guidelines detailed in the HACKING.rst
file, and pass all unit tests.

Further developer focused documentation is available at:

- `Official Nova Documentation <https://docs.openstack.org/nova/>`__
- `Official Client Documentation
  <https://docs.openstack.org/python-novaclient/>`__

Other Information
-----------------

During each `Summit`_ and `Project Team Gathering`_, we agree on what the whole
community wants to focus on for the upcoming release. The plans for nova can
be found at:

- `Nova Specs <http://specs.openstack.org/openstack/nova-specs/>`__

.. _Summit: https://www.openstack.org/summit/
.. _Project Team Gathering: https://www.openstack.org/ptg/
S
Description
No description provided
Readme 258 MiB
Languages
Python 97.5%
Smarty 2.3%
Shell 0.2%