Merge "[specs] Fix specs according implementation"

This commit is contained in:
Jenkins 2016-05-25 15:43:42 +00:00 committed by Gerrit Code Review
commit bd432f2870
2 changed files with 67 additions and 76 deletions

View File

@ -84,32 +84,32 @@ available Huge Pages and RAM per NUMA node [3]_:
Huge Pages User's configuration will be stored in node.attributes as: Huge Pages User's configuration will be stored in node.attributes as:
.. code-block:: json .. code-block:: yaml
node.attributes = { node_attributes:
... hugepages:
'nova_hugepages': { metadata:
'weight': 20, group: "nfv"
'description': "Nova Huge Pages configuration", label: "Huge Pages"
'label': "Nova Huge Pages", weight: 20
'type': 'custom_hugepages', restrictions:
'value': { - condition: "settings:common.libvirt_type.value != 'kvm'"
'<size>': <count>, action: "hide"
'1G': 10 nova:
} weight: 10
}, description: "Nova Huge Pages configuration"
'dpdk_hugepages': { label: "Nova Huge Pages"
'weight': 20, type: "custom_hugepages"
'description': "DPDK Huge Pages per NUMA node in MB", value: {}
'label': "DPDK Huge Pages", dpdk:
'type': 'text', weight: 20
'value': '128', description: "DPDK Huge Pages per NUMA node in MB"
'regex': { label: "DPDK Huge Pages"
'source': "^\d+$", type: "text"
'error': "Incorrect value" value: "0"
} regex:
... source: '^\d+$'
} error: "Incorrect value"
Where `<size>` can only be one of the available Huge Pages sizes. For all Where `<size>` can only be one of the available Huge Pages sizes. For all
remaining memory will be used default 4K page size. remaining memory will be used default 4K page size.
@ -123,6 +123,11 @@ astute.yaml will be extended as
.. code-block:: yaml .. code-block:: yaml
network_metadata:
nodes:
node-1:
nova_hugepages_enabled: True
...
nova: nova:
... ...
enable_hugepages: true enable_hugepages: true
@ -130,8 +135,12 @@ astute.yaml will be extended as
... ...
ovs_socket_mem: 128,128,128,128 ovs_socket_mem: 128,128,128,128
hugepages: hugepages:
- {count: 512, numa_id: 0, size: 2M} - {count: 512, numa_id: 0, size: 2048}
- {count: 8, numa_id: 1, size: 1G} - {count: 8, numa_id: 1, size: 1048576}
Section of `nodes` will be moved from `network_metadata` out to root in the
next releases. `nova_hugepages_enabled` will be used by controllers to
know whether appropriate filter should be enabled for nova-scheduler.
`ovs_socket_mem` contains information about Huge Pages size in MB per `ovs_socket_mem` contains information about Huge Pages size in MB per
NUMA node. DPDK driver needs only total amount of memory on each NUMA NUMA node. DPDK driver needs only total amount of memory on each NUMA

View File

@ -97,19 +97,19 @@ Collected information should be passed to nailgun in the next format:
.. code-block:: json .. code-block:: json
'numa_topology': { "numa_topology": {
'supported_hugepages': ['2048', '1048576'] "supported_hugepages": [2048, 1048576]
'numa_nodes': [ "numa_nodes": [
{'id': 0, {"id": 0,
'cpus': [0, 1, ..., 5, 12, 13, ..., 17], "cpus": [0, 1, ..., 5, 12, 13, ..., 17],
'memory: 135171932160}, "memory: 135171932160},
{'id': 1, {"id": 1,
'cpus': [6, 7, ..., 11, 18, 19, ..., 23], "cpus": [6, 7, ..., 11, 18, 19, ..., 23],
'memory': 135289372672}] "memory": 135289372672}]
], ],
'distances': [ "distances": [
[1.0, 2.1], ["1.0", "2.1"],
[2.1, 1.0] ["2.1", "1.0"]
] ]
} }
@ -130,7 +130,7 @@ This information will be stored in node metadata
node.metadata = { node.metadata = {
... ...
'numa_topology': { "numa_topology": {
... ...
} }
... ...
@ -176,29 +176,6 @@ where User's CPUs configuration will be stored as
regex: regex:
source: '^\d+$' source: '^\d+$'
error: "Incorrect value" error: "Incorrect value"
hugepages:
metadata:
group: "nfv"
label: "Huge Pages"
weight: 20
restrictions:
- condition: "settings:common.libvirt_type.value != 'kvm'"
action: "hide"
nova:
weight: 10
description: "Nova Huge Pages configuration"
label: "Nova Huge Pages"
type: "custom_hugepages"
value: {}
dpdk:
weight: 20
description: "DPDK Huge Pages per NUMA node in MB"
label: "DPDK Huge Pages"
type: "text"
value: "0"
regex:
source: '^\d+$'
error: "Incorrect value"
All values will be '0' by default. All values will be '0' by default.
Nailgun will specify CPU ids for each Nova and DPDK accordingly to User Nailgun will specify CPU ids for each Nova and DPDK accordingly to User
@ -206,21 +183,27 @@ configuration and pass this information to astute.yaml:
.. code-block:: yaml .. code-block:: yaml
network_metadata:
nodes:
node-1:
nova_cpu_pinning_enabled: True
...
nova: nova:
... ...
cpu_pinning: [0, 1, 18, 19] cpu_pinning: [0, 1, 18, 19]
enable_cpu_pinning: true
dpdk: dpdk:
... ...
enabled: True enabled: True
ovs_core_mask: 0x4 ovs_core_mask: 0x4
ovs_pmd_core_mask: 0x6 ovs_pmd_core_mask: 0x6
`cpu_pinning` will be generated per compute node. Section of `nodes` will be moved from `network_metadata` out to root in the
`enable_cpu_pinning` will be true in case there are some next releases. `nova_cpu_pinning_enabled` will be used by controllers to
compute with pinned CPU. It's global (is generated for all nodes). know whether appropriate filter should be enabled for nova-scheduler.
DPDK `enable` will be taken from appropriate NIC info [2]_. `cpu_pinning` will be generated per compute node.
DPDK `enabled` will be taken from appropriate NIC info [2]_.
Nailgun will calculate cpu masks according to User configuration - Nailgun will calculate cpu masks according to User configuration -
`dpdk_cpu_pinning` `dpdk_cpu_pinning`
@ -267,27 +250,26 @@ None
Fuel Client Fuel Client
=========== ===========
Fuel Client have to show node NUMA topology. New command should be added: Fuel Client have to show node NUMA topology. Node show command will be
extended with new fields:
.. code-block:: console .. code-block:: console
fuel node --node-id 1 --numa-topology fuel2 node show 1
User can use next commands to configure node attributes User can use next commands to configure node attributes
.. code-block:: console .. code-block:: console
fuel node --node-id 1 --attributes --download/-d fuel node --node-id 1 --attributes --download [--dir download-dir]
fuel node --node-id 1 --attributes --upload/-u fuel node --node-id 1 --attributes --upload [--dir upload-dir]
Also, appropriate commands should be added to fuel2 client: Also, appropriate commands should be added to fuel2 client:
.. code-block:: console .. code-block:: console
fuel2 node show-numa-topology 1 fuel2 node attributes-download 1
fuel2 node attributes-upload 1
fuel2 node download-attributes 1
fuel2 node upload-attributes 1
Plugins Plugins