Virt driver guest NUMA node placement & topology

Registered by Daniel Berrange

This feature aims to enhance the libvirt driver to be able todo intelligent
NUMA node placement for guests. This will increase the effective utilization
of compute resources and decrease latency by avoiding cross-node memory
accesses by guests.

Blueprint information

Status:
Complete
Approver:
John Garbutt
Priority:
Medium
Drafter:
Daniel Berrange
Direction:
Approved
Assignee:
Daniel Berrange
Definition:
Approved
Series goal:
Accepted for juno
Implementation:
Implemented
Milestone target:
milestone icon 2014.2
Started by
Daniel Berrange
Completed by
Michael Still

Related branches

Sprints

Whiteboard

Gerrit topic: https://review.openstack.org/#q,topic:virt-driver-numa-placement,n,z

Addressed by: https://review.openstack.org/93636
    Virt driver guest NUMA node placement & topology

Gerrit topic: https://review.openstack.org/#q,topic:bp/virt-driver-numa-placement,n,z

Addressed by: https://review.openstack.org/99153
    libvirt: introduce separate class for cpu tune XML config

Addressed by: https://review.openstack.org/99154
    libvirt: add support for per-vCPU pinning in guest XML

Addressed by: https://review.openstack.org/99155
    libvirt: add support for memory backing parameters

Addressed by: https://review.openstack.org/99156
    libvirt: add support for guest NUMA topology in XML config

Addressed by: https://review.openstack.org/99157
    libvirt: add parsing of NUMA topology in capabilities XML

Addressed by: https://review.openstack.org/95723
    libvirt: test setting of CPU tuning data

Addressed by: https://review.openstack.org/97500
    libvirt: Remove use of db for flavor extra specs in tests

Addressed by: https://review.openstack.org/99927
    libvirt: add helpers for parsing/formatting CPU range specs

Addressed by: https://review.openstack.org/105201
    virt: move get_cpuset_ids into nova.virt.hardware

Addressed by: https://review.openstack.org/105202
    virt: split CPU spec parsing code out into helper method

Addressed by: https://review.openstack.org/105203
    virt: add method for formatting CPU sets to strings

Addressed by: https://review.openstack.org/105204
    libvirt: convert cpuset XML handling to use set instead of string

Gerrit topic: https://review.openstack.org/#q,topic:virt-driver-guest-cpu-memory-placement-v5,n,z

Addressed by: https://review.openstack.org/108093
    Add dict transformations to hardware NUMA classes

Addressed by: https://review.openstack.org/108094
    Add numa_topology column to the compute_node table

Addressed by: https://review.openstack.org/108095
    libvirt: Add method for getting host NUMA topolog

Addressed by: https://review.openstack.org/108097
    Add numa_topology column to the instances table

Addressed by: https://review.openstack.org/108098
    Add a method for updating usage to VirtNUMAToplogy

Addressed by: https://review.openstack.org/105693
    libvirt: add support for memory tuning in config

Addressed by: https://review.openstack.org/105694
    virt: helper for processing NUMA topology configuration

Addressed by: https://review.openstack.org/110886
    Make usage_from_instances consider current usage

Addressed by: https://review.openstack.org/110957
    Expose numa_topology to the resource tracker

Addressed by: https://review.openstack.org/111008
    Add claims testing to VirtNUMAHostTopology class

Addressed by: https://review.openstack.org/111339
    Add FlavorList.get_by_ids() bulk query operation

Addressed by: https://review.openstack.org/111782
    Cache flavors in the resource tracker

Addressed by: https://review.openstack.org/112027
    Hook NUMA topology checking into claims

Addressed by: https://review.openstack.org/113906
    Make resource tracker track NUMA usage

Addressed by: https://review.openstack.org/114483
    API boot process sets NUMA topology for instances

Addressed by: https://review.openstack.org/114938
    Method for getting NUMA usage from an instance

Addressed by: https://review.openstack.org/114939
    Make HostManager track NUMA usage

Addressed by: https://review.openstack.org/115007
    Add the NUMATopologyFilter

Addressed by: https://review.openstack.org/115381
    libvirt: Consider numa_topology when booting

Addressed by: https://review.openstack.org/116361
    Add a Set and SetOfIntegers object fields

Addressed by: https://review.openstack.org/116475
    Make Object FieldType from_primitive pass objects

Gerrit topic: https://review.openstack.org/#q,topic:bp/input-output-based-numa-scheduling,n,z

Addressed by: https://review.openstack.org/117774
    Remove instance relationship from InstanceExtra model

Addressed by: https://review.openstack.org/117781
    Add pci_requests to instance_extra table

Addressed by: https://review.openstack.org/117839
    WIP: Add InstancePCIRequests object

Addressed by: https://review.openstack.org/117895
    Add instance_extra_update_by_uuid() to DB API

Addressed by: https://review.openstack.org/118100
    InstanceNUMAToplogy object create remove uuid param

Has some +2s, so leaving in juno for now. But its looking very, very tight now. --johnthetubaguy 2nd September 2014

All in the gate now, so needs pushing through. --johnthetubaguy 3rd September 2014

The major parts of this are unable to get through the gate before FFE. Kicking this out of juno for now. Please apply for a FFE at the nova-meeting. --johnthetubaguy 4th September 2014

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.