diff options
author | Victor Morales <victor.morales@intel.com> | 2020-01-06 16:41:13 -0800 |
---|---|---|
committer | Victor Morales <victor.morales@intel.com> | 2020-01-08 08:11:50 -0800 |
commit | 4b6b755d8669e81ccb232e8b6a968a554e2b188b (patch) | |
tree | c76b188ab19d5b6bf36e41e204e0bcfca9231d2c /doc/source/contributor | |
parent | 7ca014cea7b01a7fc8f3235c8c3a18b16fdfd444 (diff) | |
download | nova-4b6b755d8669e81ccb232e8b6a968a554e2b188b.tar.gz |
Update Testing NUMA documentation
The document which contains the steps to test different NUMA
setups was using legacy instructions. This change pretends to update
those instructions to improve the readability.
Change-Id: Id8bf96f035528b15a51c802f06e07422b9f36736
Diffstat (limited to 'doc/source/contributor')
-rw-r--r-- | doc/source/contributor/testing/libvirt-numa.rst | 544 |
1 files changed, 326 insertions, 218 deletions
diff --git a/doc/source/contributor/testing/libvirt-numa.rst b/doc/source/contributor/testing/libvirt-numa.rst index f5827ac1d9..ff52d6b366 100644 --- a/doc/source/contributor/testing/libvirt-numa.rst +++ b/doc/source/contributor/testing/libvirt-numa.rst @@ -55,13 +55,13 @@ guest with 8 virtual CPUs, 8 GB of RAM and 20 GB of disk space: .. code-block:: bash # cd /var/lib/libvirt/images - # wget https://download.fedoraproject.org/pub/fedora/linux/releases/24/Server/x86_64/iso/Fedora-Server-netinst-x86_64-24-1.2.iso + # wget https://download.fedoraproject.org/pub/fedora/linux/releases/29/Server/x86_64/iso/Fedora-Server-netinst-x86_64-29-1.2.iso # virt-install \ - --name f24x86_64 \ + --name f29x86_64 \ --ram 8000 \ --vcpus 8 \ - --file /var/lib/libvirt/images/f24x86_64.img \ + --file /var/lib/libvirt/images/f29x86_64.img \ --file-size 20 --cdrom /var/lib/libvirt/images/Fedora-Server-netinst-x86_64-24-1.2.iso \ --os-variant fedora23 @@ -164,7 +164,7 @@ of nova libvirt guests boot a tiny instance: .. code-block:: bash $ . openrc admin - $ openstack server create --image cirros-0.3.4-x86_64-uec --flavor m1.tiny \ + $ openstack server create --image cirros-0.4.0-x86_64-disk --flavor m1.tiny \ cirros1 The host will be reporting NUMA topology, but there should only be a single @@ -173,57 +173,87 @@ example (with object versioning fields removed): .. code-block:: bash - $ mysql -u root -p123456 nova + $ mysql -u root -p123456 nova_cell1 MariaDB [nova]> select numa_topology from compute_nodes; +----------------------------------------------------------------------------+ | numa_topology | +----------------------------------------------------------------------------+ | { | "nova_object.name": "NUMATopology", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.2", | "nova_object.data": { | "cells": [{ - | "nova_object.name": "NUMACell", - | "nova_object.data": { - | "cpu_usage": 0, - | "memory_usage": 0, - | "cpuset": [0, 1, 2, 3, 4, 5, 6, 7], - | "pinned_cpus": [], - | "siblings": [], - | "memory": 7793, - | "mempages": [ - | { - | "nova_object.name": "NUMAPagesTopology", - | "nova_object.data": { - | "used": 0, - | "total": 987430, - | "reserved":0, - | "size_kb": 4 - | }, - | }, - | { - | "nova_object.name": "NUMAPagesTopology", - | "nova_object.data": { - | "used": 0, - | "total": 0, - | "reserved":0, - | "size_kb": 2048 - | }, - | }, - | { - | "nova_object.name": "NUMAPagesTopology", - | "nova_object.data": { - | "used": 0, - | "total": 0, - | "reserved": 0, - | "size_kb": 1048576 - | }, - | } - | ], - | "id": 0 - | }, + | "nova_object.name": "NUMACell", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.4", + | "nova_object.data": { + | "id": 0, + | "cpuset": [0, 1, 2, 3, 4, 5, 6, 7], + | "pcpuset": [0, 1, 2, 3, 4, 5, 6, 7], + | "memory": 7975, + | "cpu_usage": 0, + | "memory_usage": 0, + | "pinned_cpus": [], + | "siblings": [ + | [0], + | [1], + | [2], + | [3], + | [4], + | [5], + | [6], + | [7] + | ], + | "mempages": [{ + | "nova_object.name": "NUMAPagesTopology", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.1", + | "nova_object.data": { + | "size_kb": 4, + | "total": 2041795, + | "used": 0, + | "reserved": 0 + | }, + | "nova_object.changes": ["size_kb", "total", "reserved", "used"] + | }, { + | "nova_object.name": "NUMAPagesTopology", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.1", + | "nova_object.data": { + | "size_kb": 2048, + | "total": 0, + | "used": 0, + | "reserved": 0 + | }, + | "nova_object.changes": ["size_kb", "total", "reserved", "used"] + | }, { + | "nova_object.name": "NUMAPagesTopology", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.1", + | "nova_object.data": { + | "size_kb": 1048576, + | "total": 0, + | "used": 0, + | "reserved": 0 + | }, + | "nova_object.changes": ["size_kb", "total", "reserved", "used"] + | }], + | "network_metadata": { + | "nova_object.name": "NetworkMetadata", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.0", + | "nova_object.data": { + | "physnets": [], + | "tunneled": false + | }, + | "nova_object.changes": ["tunneled", "physnets"] + | } | }, - | ] + | "nova_object.changes": ["pinned_cpus", "memory_usage", "siblings", "mempages", "memory", "id", "network_metadata", "cpuset", "cpu_usage", "pcpuset"] + | }] | }, + | "nova_object.changes": ["cells"] | } +----------------------------------------------------------------------------+ @@ -255,7 +285,7 @@ And now back on the physical host edit the guest config as root: .. code-block:: bash - $ sudo virsh edit f21x86_64 + $ sudo virsh edit f29x86_64 The first thing is to change the `<cpu>` block to do passthrough of the host CPU. In particular this exposes the "SVM" or "VMX" feature bits to the guest so @@ -279,7 +309,7 @@ Now start the guest again: .. code-block:: bash - # virsh start f24x86_64 + # virsh start f29x86_64 ...and login back in: @@ -307,141 +337,207 @@ topology setup for the guest: .. code-block:: bash - $ mysql -u root -p123456 nova + $ mysql -u root -p123456 nova_cell1 MariaDB [nova]> select numa_topology from compute_nodes; +----------------------------------------------------------------------------+ | numa_topology | +----------------------------------------------------------------------------+ | { | "nova_object.name": "NUMATopology", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.2", | "nova_object.data": { - | "cells": [ - | { - | "nova_object.name": "NUMACell", - | "nova_object.data": { - | "cpu_usage": 0, - | "memory_usage": 0, - | "cpuset": [0, 1, 2, 3], - | "pinned_cpus": [], - | "siblings": [], - | "memory": 3856, - | "mempages": [ - | { - | "nova_object.name": "NUMAPagesTopology", - | "nova_object.data": { - | "used": 0, - | "total": 987231, - | "reserved": 0, - | "size_kb": 4 - | }, - | }, - | { - | "nova_object.name": "NUMAPagesTopology", - | "nova_object.data": { - | "used": 0, - | "total": 0, - | "reserved": 0, - | "size_kb": 2048 - | }, - | }, - | { - | "nova_object.name": "NUMAPagesTopology", - | "nova_object.data": { - | "used": 0, - | "total": 0, - | "reserved": 0, - | "size_kb": 1048576 - | }, - | } - | ], - | "id": 0 - | }, + | "cells": [{ + | "nova_object.name": "NUMACell", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.4", + | "nova_object.data": { + | "id": 0, + | "cpuset": [0, 1, 2, 3], + | "pcpuset": [0, 1, 2, 3], + | "memory": 3966, + | "cpu_usage": 0, + | "memory_usage": 0, + | "pinned_cpus": [], + | "siblings": [ + | [2], + | [0], + | [3], + | [1] + | ], + | "mempages": [{ + | "nova_object.name": "NUMAPagesTopology", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.1", + | "nova_object.data": { + | "size_kb": 4, + | "total": 1015418, + | "used": 0, + | "reserved": 0 + | }, + | "nova_object.changes": ["total", "size_kb", "used", "reserved"] + | }, { + | "nova_object.name": "NUMAPagesTopology", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.1", + | "nova_object.data": { + | "size_kb": 2048, + | "total": 0, + | "used": 0, + | "reserved": 0 + | }, + | "nova_object.changes": ["total", "size_kb", "used", "reserved"] + | }, { + | "nova_object.name": "NUMAPagesTopology", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.1", + | "nova_object.data": { + | "size_kb": 1048576, + | "total": 0, + | "used": 0, + | "reserved": 0 + | }, + | "nova_object.changes": ["total", "size_kb", "used", "reserved"] + | }], + | "network_metadata": { + | "nova_object.name": "NetworkMetadata", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.0", + | "nova_object.data": { + | "physnets": [], + | "tunneled": false + | }, + | "nova_object.changes": ["physnets", "tunneled"] + | } + | }, + | "nova_object.changes": ["pinned_cpus", "siblings", "memory", "id", "cpuset", "network_metadata", "pcpuset", "mempages", "cpu_usage", "memory_usage"] + | }, { + | "nova_object.name": "NUMACell", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.4", + | "nova_object.data": { + | "id": 1, + | "cpuset": [4, 5], + | "pcpuset": [4, 5], + | "memory": 1994, + | "cpu_usage": 0, + | "memory_usage": 0, + | "pinned_cpus": [], + | "siblings": [ + | [5], + | [4] + | ], + | "mempages": [{ + | "nova_object.name": "NUMAPagesTopology", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.1", + | "nova_object.data": { + | "size_kb": 4, + | "total": 510562, + | "used": 0, + | "reserved": 0 + | }, + | "nova_object.changes": ["total", "size_kb", "used", "reserved"] + | }, { + | "nova_object.name": "NUMAPagesTopology", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.1", + | "nova_object.data": { + | "size_kb": 2048, + | "total": 0, + | "used": 0, + | "reserved": 0 + | }, + | "nova_object.changes": ["total", "size_kb", "used", "reserved"] + | }, { + | "nova_object.name": "NUMAPagesTopology", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.1", + | "nova_object.data": { + | "size_kb": 1048576, + | "total": 0, + | "used": 0, + | "reserved": 0 + | }, + | "nova_object.changes": ["total", "size_kb", "used", "reserved"] + | }], + | "network_metadata": { + | "nova_object.name": "NetworkMetadata", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.0", + | "nova_object.data": { + | "physnets": [], + | "tunneled": false + | }, + | "nova_object.changes": ["physnets", "tunneled"] + | } | }, - | { - | "nova_object.name": "NUMACell", - | "nova_object.data": { - | "cpu_usage": 0, - | "memory_usage": 0, - | "cpuset": [4, 5], - | "pinned_cpus": [], - | "siblings": [], - | "memory": 1969, - | "mempages": [ - | { - | "nova_object.name": "NUMAPagesTopology", - | "nova_object.data": { - | "used": 0, - | "total": 504202, - | "reserved": 0, - | "size_kb": 4 - | }, - | }, - | { - | "nova_object.name": "NUMAPagesTopology", - | "nova_object.data": { - | "used": 0, - | "total": 0, - | "reserved": 0, - | "size_kb": 2048 - | }, - | }, - | { - | "nova_object.name": "NUMAPagesTopology", - | "nova_object.data": { - | "used": 0, - | "total": 0, - | "reserved": 0, - | "size_kb": 1048576 - | }, - | } - | ], - | "id": 1 - | }, + | "nova_object.changes": ["pinned_cpus", "siblings", "memory", "id", "cpuset", "network_metadata", "pcpuset", "mempages", "cpu_usage", "memory_usage"] + | }, { + | "nova_object.name": "NUMACell", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.4", + | "nova_object.data": { + | "id": 2, + | "cpuset": [6, 7], + | "pcpuset": [6, 7], + | "memory": 2014, + | "cpu_usage": 0, + | "memory_usage": 0, + | "pinned_cpus": [], + | "siblings": [ + | [7], + | [6] + | ], + | "mempages": [{ + | "nova_object.name": "NUMAPagesTopology", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.1", + | "nova_object.data": { + | "size_kb": 4, + | "total": 515727, + | "used": 0, + | "reserved": 0 + | }, + | "nova_object.changes": ["total", "size_kb", "used", "reserved"] + | }, { + | "nova_object.name": "NUMAPagesTopology", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.1", + | "nova_object.data": { + | "size_kb": 2048, + | "total": 0, + | "used": 0, + | "reserved": 0 + | }, + | "nova_object.changes": ["total", "size_kb", "used", "reserved"] + | }, { + | "nova_object.name": "NUMAPagesTopology", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.1", + | "nova_object.data": { + | "size_kb": 1048576, + | "total": 0, + | "used": 0, + | "reserved": 0 + | }, + | "nova_object.changes": ["total", "size_kb", "used", "reserved"] + | }], + | "network_metadata": { + | "nova_object.name": "NetworkMetadata", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.0", + | "nova_object.data": { + | "physnets": [], + | "tunneled": false + | }, + | "nova_object.changes": ["physnets", "tunneled"] + | } | }, - | { - | "nova_object.name": "NUMACell", - | "nova_object.data": { - | "cpu_usage": 0, - | "memory_usage": 0, - | "cpuset": [6, 7], - | "pinned_cpus": [], - | "siblings": [], - | "memory": 1967, - | "mempages": [ - | { - | "nova_object.name": "NUMAPagesTopology", - | "nova_object.data": { - | "used": 0, - | "total": 503565, - | "reserved": 0, - | "size_kb": 4 - | }, - | }, - | { - | "nova_object.name": "NUMAPagesTopology", - | "nova_object.data": { - | "used": 0, - | "total": 0, - | "reserved": 0, - | "size_kb": 2048 - | }, - | }, - | { - | "nova_object.name": "NUMAPagesTopology", - | "nova_object.data": { - | "used": 0, - | "total": 0, - | "reserved": 0, - | "size_kb": 1048576 - | }, - | } - | ], - | "id": 2 - | }, - | } - | ] + | "nova_object.changes": ["pinned_cpus", "siblings", "memory", "id", "cpuset", "network_metadata", "pcpuset", "mempages", "cpu_usage", "memory_usage"] + | }] | }, - | } + | "nova_object.changes": ["cells"] +----------------------------------------------------------------------------+ This indeed shows that there are now 3 NUMA nodes for the "host" machine, the @@ -460,7 +556,7 @@ condition: .. code-block:: bash $ . openrc admin admin - $ openstack server create --image cirros-0.3.4-x86_64-uec --flavor m1.tiny \ + $ openstack server create --image cirros-0.4.0-x86_64-disk --flavor m1.tiny \ cirros1 Now look at the libvirt guest XML: @@ -498,7 +594,7 @@ Now boot the guest using this new flavor: .. code-block:: bash - $ openstack server create --image cirros-0.3.4-x86_64-uec --flavor m1.numa \ + $ openstack server create --image cirros-0.4.0-x86_64-disk --flavor m1.numa \ cirros2 Looking at the resulting guest XML from libvirt: @@ -551,30 +647,35 @@ database. This should match the ``<numatune>`` information: .. code-block:: bash - $ mysql -u root -p123456 nova + $ mysql -u root -p123456 nova_cell1 MariaDB [nova]> select numa_topology from instance_extra; +----------------------------------------------------------------------------+ | numa_topology | +----------------------------------------------------------------------------+ | { | "nova_object.name": "InstanceNUMATopology", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.3", | "nova_object.data": { - | "cells": [ - | { - | "nova_object.name": "InstanceNUMACell", - | "nova_object.data": { - | "pagesize": null, - | "cpu_topology": null, - | "cpuset": [0, 1, 2, 3], - | "cpu_policy": null, - | "memory": 1024, - | "cpu_pinning_raw": null, - | "id": 0, - | "cpu_thread_policy": null - | }, - | } - | ] + | "cells": [{ + | "nova_object.name": "InstanceNUMACell", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.4", + | "nova_object.data": { + | "id": 0, + | "cpuset": [0, 1, 2, 3], + | "memory": 1024, + | "pagesize": null, + | "cpu_pinning_raw": null, + | "cpu_policy": null, + | "cpu_thread_policy": null, + | "cpuset_reserved": null + | }, + | "nova_object.changes": ["id"] + | }], + | "emulator_threads_policy": null | }, + | "nova_object.changes": ["cells", "emulator_threads_policy"] | } +----------------------------------------------------------------------------+ @@ -600,7 +701,7 @@ Now boot the guest using this changed flavor: .. code-block:: bash - $ openstack server create --image cirros-0.3.4-x86_64-uec --flavor m1.numa \ + $ openstack server create --image cirros-0.4.0-x86_64-disk --flavor m1.numa \ cirros2 Looking at the resulting guest XML from libvirt: @@ -661,35 +762,42 @@ database. This should match the ``<numatune>`` information: +----------------------------------------------------------------------------+ | { | "nova_object.name": "InstanceNUMATopology", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.3", | "nova_object.data": { - | "cells": [ - | { - | "nova_object.name": "InstanceNUMACell", - | "nova_object.data": { - | "pagesize": null, - | "cpu_topology": null, - | "cpuset": [0, 1], - | "cpu_policy": null, - | "memory": 512, - | "cpu_pinning_raw": null, - | "id": 0, - | "cpu_thread_policy": null - | }, + | "cells": [{ + | "nova_object.name": "InstanceNUMACell", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.4", + | "nova_object.data": { + | "id": 0, + | "cpuset": [0, 1], + | "memory": 512, + | "pagesize": null, + | "cpu_pinning_raw": null, + | "cpu_policy": null, + | "cpu_thread_policy": null, + | "cpuset_reserved": null + | }, + | "nova_object.changes": ["id"] + | }, { + | "nova_object.name": "InstanceNUMACell", + | "nova_object.namespace": "nova", + | "nova_object.version": "1.4", + | "nova_object.data": { + | "id": 1, + | "cpuset": [2, 3], + | "memory": 512, + | "pagesize": null, + | "cpu_pinning_raw": null, + | "cpu_policy": null, + | "cpu_thread_policy": null, + | "cpuset_reserved": null | }, - | { - | "nova_object.name": "InstanceNUMACell", - | "nova_object.data": { - | "pagesize": null, - | "cpu_topology": null, - | "cpuset": [2, 3], - | "cpu_policy": null, - | "memory": 512, - | "cpu_pinning_raw": null, - | "id": 1, - | "cpu_thread_policy": null - | }, - | } - | ] + | "nova_object.changes": ["id"] + | }], + | "emulator_threads_policy": null | }, + | "nova_object.changes": ["cells", "emulator_threads_policy"] | } +----------------------------------------------------------------------------+ |