aboutsummaryrefslogtreecommitdiffstats
path: root/ansible
diff options
context:
space:
mode:
authorJingLu5 <lvjing5@huawei.com>2017-03-08 03:28:27 +0000
committerJingLu5 <lvjing5@huawei.com>2017-03-13 07:16:54 +0000
commitf138b480ea4c9954d107555d7a46ec3d4375653f (patch)
treebf0c6c68e13491c7e4c40f31db4bb24b43d64060 /ansible
parent106eae2d19ca59e27262a7d8c3cd4501507697ff (diff)
Add CPU pinning support for node context
JIRA: YARDSTICK-573 Since the yardstick framework now has supported an improved node type context, this patch adds support for VM vcpu pinning ability in the node type context. It provides several scripts that can be used to configurate the controller and compute nodes. Change-Id: If2c6e7b1b85ff78b9d2a5997bf03bdc6877aaf74 Signed-off-by: JingLu5 <lvjing5@huawei.com>
Diffstat (limited to 'ansible')
-rw-r--r--ansible/ansible.cfg2
-rw-r--r--ansible/cpu_pin_setup.yaml23
-rw-r--r--ansible/cpu_pin_teardown.yaml23
-rw-r--r--ansible/inventory.ini8
-rw-r--r--ansible/roles/cpu_pin_local_setup/tasks/main.yaml63
-rw-r--r--ansible/roles/cpu_pin_local_teardowm/tasks/main.yaml50
-rw-r--r--ansible/roles/restart_nova_compute/tasks/main.yaml14
-rw-r--r--ansible/roles/restart_nova_scheduler/tasks/main.yaml14
-rw-r--r--ansible/roles/scheduler_default_filters_reset/tasks/main.yaml15
-rw-r--r--ansible/roles/scheduler_default_filters_setup/tasks/main.yaml15
-rw-r--r--ansible/roles/scheduler_default_filters_setup/vars/main.yaml1
-rw-r--r--ansible/roles/vcpu_pin_set_reset/tasks/main.yaml21
-rw-r--r--ansible/roles/vcpu_pin_set_setup/tasks/main.yaml21
-rw-r--r--ansible/roles/vcpu_pin_set_setup/vars/main.yaml2
14 files changed, 272 insertions, 0 deletions
diff --git a/ansible/ansible.cfg b/ansible/ansible.cfg
new file mode 100644
index 000000000..14c806515
--- /dev/null
+++ b/ansible/ansible.cfg
@@ -0,0 +1,2 @@
+[defaults]
+host_key_checking = False
diff --git a/ansible/cpu_pin_setup.yaml b/ansible/cpu_pin_setup.yaml
new file mode 100644
index 000000000..2a3fb5b3f
--- /dev/null
+++ b/ansible/cpu_pin_setup.yaml
@@ -0,0 +1,23 @@
+---
+##############################################################################
+# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+- hosts: localhost
+ roles:
+ - cpu_pin_local_setup
+
+- hosts: controller
+ roles:
+ - scheduler_default_filters_setup
+ - restart_nova_scheduler
+
+- hosts: compute
+ roles:
+ - vcpu_pin_set_setup
+ - restart_nova_compute
diff --git a/ansible/cpu_pin_teardown.yaml b/ansible/cpu_pin_teardown.yaml
new file mode 100644
index 000000000..7647eebdb
--- /dev/null
+++ b/ansible/cpu_pin_teardown.yaml
@@ -0,0 +1,23 @@
+---
+##############################################################################
+# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+- hosts: compute
+ roles:
+ - vcpu_pin_set_reset
+ - restart_nova_compute
+
+- hosts: controller
+ roles:
+ - scheduler_default_filters_reset
+ - restart_nova_scheduler
+
+- hosts: localhost
+ roles:
+ - cpu_pin_local_teardown
diff --git a/ansible/inventory.ini b/ansible/inventory.ini
new file mode 100644
index 000000000..440e625bd
--- /dev/null
+++ b/ansible/inventory.ini
@@ -0,0 +1,8 @@
+[controller]
+host1 ansible_host=10.1.0.50 ansible_user=root ansible_ssh_pass=root
+host2 ansible_host=10.1.0.51 ansible_user=root ansible_ssh_pass=root
+host3 ansible_host=10.1.0.52 ansible_user=root ansible_ssh_pass=root
+
+[compute]
+host4 ansible_host=10.1.0.53 ansible_user=root ansible_ssh_pass=root
+host5 ansible_host=10.1.0.54 ansible_user=root ansible_ssh_pass=root
diff --git a/ansible/roles/cpu_pin_local_setup/tasks/main.yaml b/ansible/roles/cpu_pin_local_setup/tasks/main.yaml
new file mode 100644
index 000000000..c25b801be
--- /dev/null
+++ b/ansible/roles/cpu_pin_local_setup/tasks/main.yaml
@@ -0,0 +1,63 @@
+---
+##############################################################################
+# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+- name: get nova-compute host
+ shell:
+ source /etc/yardstick/openstack.creds;
+ openstack availability zone list --long | grep nova-compute | sort | awk '{print $7}';
+ args:
+ executable: /bin/bash
+ register: compute_nodes
+
+- name: get existing flavor list
+ shell:
+ source /etc/yardstick/openstack.creds;
+ openstack flavor list | grep "True" | cut -f 2 -d ' ';
+ args:
+ executable: /bin/bash
+ register: flavors
+
+- name: create pinned-cpu and regular host aggregate
+ shell:
+ source /etc/yardstick/openstack.creds;
+ openstack aggregate create pinned-cpu;
+ openstack aggregate create regular;
+ nova aggregate-set-metadata pinned-cpu pinned=true;
+ nova aggregate-set-metadata regular pinned=false;
+ nova aggregate-add-host pinned-cpu {{ compute_nodes.stdout_lines[0] }};
+ nova aggregate-add-host regular {{ compute_nodes.stdout_lines[1] }};
+ args:
+ executable: /bin/bash
+
+- name: set flavor default property
+ shell:
+ source /etc/yardstick/openstack.creds;
+ openstack flavor set --property aggregate_instance_extra_specs:pinned=false {{item}};
+ args:
+ executable: /bin/bash
+ with_items:
+ - '{{ flavors.stdout_lines }}'
+
+- name: create flavor yardstick-pinned-flavor
+ os_nova_flavor:
+ cloud: opnfv
+ state: present
+ name: yardstick-pinned-flavor
+ ram: 512
+ vcpus: 3
+ disk: 3
+
+- name: set yardstick-pinned-flavor property
+ shell:
+ source /etc/yardstick/openstack.creds;
+ openstack flavor set --property hw:cpu_policy=dedicated yardstick-pinned-flavor;
+ openstack flavor set --property aggregate_instance_extra_specs:pinned=true yardstick-pinned-flavor;
+ args:
+ executable: /bin/bash
diff --git a/ansible/roles/cpu_pin_local_teardowm/tasks/main.yaml b/ansible/roles/cpu_pin_local_teardowm/tasks/main.yaml
new file mode 100644
index 000000000..29475421d
--- /dev/null
+++ b/ansible/roles/cpu_pin_local_teardowm/tasks/main.yaml
@@ -0,0 +1,50 @@
+---
+##############################################################################
+# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+- name: get nova-compute host
+ shell:
+ source /etc/yardstick/openstack.creds;
+ openstack availability zone list --long | grep nova-compute | sort | awk '{print $7}';
+ args:
+ executable: /bin/bash
+ register: compute_nodes
+
+- name: delete flavor yardstick-pinned-flavor
+ os_nova_flavor:
+ cloud: opnfv
+ state: absent
+ name: yardstick-pinned-flavor
+
+- name: get flavor list
+ shell:
+ source /etc/yardstick/openstack.creds;
+ openstack flavor list | grep "True" | cut -f 2 -d ' ';
+ args:
+ executable: /bin/bash
+ register: flavors
+
+- name: unset flavor default property
+ shell:
+ source /etc/yardstick/openstack.creds;
+ openstack flavor unset --property aggregate_instance_extra_specs:pinned {{item}};
+ args:
+ executable: /bin/bash
+ with_items:
+ - '{{ flavors.stdout_lines }}'
+
+- name: delete pinned-cpu and regular host aggregate
+ shell:
+ source /etc/yardstick/openstack.creds;
+ nova aggregate-remove-host pinned-cpu {{ compute_nodes.stdout_lines[0] }};
+ nova aggregate-remove-host regular {{ compute_nodes.stdout_lines[1] }};
+ openstack aggregate delete pinned-cpu;
+ openstack aggregate delete regular;
+ args:
+ executable: /bin/bash
diff --git a/ansible/roles/restart_nova_compute/tasks/main.yaml b/ansible/roles/restart_nova_compute/tasks/main.yaml
new file mode 100644
index 000000000..77c2d4dca
--- /dev/null
+++ b/ansible/roles/restart_nova_compute/tasks/main.yaml
@@ -0,0 +1,14 @@
+---
+##############################################################################
+# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+- name: restart nova compute service
+ service:
+ name: nova-compute
+ state: restarted
diff --git a/ansible/roles/restart_nova_scheduler/tasks/main.yaml b/ansible/roles/restart_nova_scheduler/tasks/main.yaml
new file mode 100644
index 000000000..543e946c3
--- /dev/null
+++ b/ansible/roles/restart_nova_scheduler/tasks/main.yaml
@@ -0,0 +1,14 @@
+---
+##############################################################################
+# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+- name: restart nova scheduler service
+ service:
+ name: nova-scheduler
+ state: restarted
diff --git a/ansible/roles/scheduler_default_filters_reset/tasks/main.yaml b/ansible/roles/scheduler_default_filters_reset/tasks/main.yaml
new file mode 100644
index 000000000..21e0efcfd
--- /dev/null
+++ b/ansible/roles/scheduler_default_filters_reset/tasks/main.yaml
@@ -0,0 +1,15 @@
+---
+##############################################################################
+# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+- name: reset scheduler default filters
+ lineinfile:
+ dest: /etc/nova/nova.conf
+ state: absent
+ regexp: 'scheduler_default_filters'
diff --git a/ansible/roles/scheduler_default_filters_setup/tasks/main.yaml b/ansible/roles/scheduler_default_filters_setup/tasks/main.yaml
new file mode 100644
index 000000000..5429ca91b
--- /dev/null
+++ b/ansible/roles/scheduler_default_filters_setup/tasks/main.yaml
@@ -0,0 +1,15 @@
+---
+##############################################################################
+# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+- name: add scheduler_default_filters for cpu pinning
+ lineinfile:
+ dest: /etc/nova/nova.conf
+ insertafter: 'DEFAULT'
+ line: 'scheduler_default_filters={{cpu_pin_filters}}'
diff --git a/ansible/roles/scheduler_default_filters_setup/vars/main.yaml b/ansible/roles/scheduler_default_filters_setup/vars/main.yaml
new file mode 100644
index 000000000..47b944470
--- /dev/null
+++ b/ansible/roles/scheduler_default_filters_setup/vars/main.yaml
@@ -0,0 +1 @@
+cpu_pin_filters: NUMATopologyFilter,AggregateInstanceExtraSpecsFilter
diff --git a/ansible/roles/vcpu_pin_set_reset/tasks/main.yaml b/ansible/roles/vcpu_pin_set_reset/tasks/main.yaml
new file mode 100644
index 000000000..f862c3c8f
--- /dev/null
+++ b/ansible/roles/vcpu_pin_set_reset/tasks/main.yaml
@@ -0,0 +1,21 @@
+---
+##############################################################################
+# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+- name: remove vcpu pin set
+ lineinfile:
+ dest: /etc/nova/nova.conf
+ state: absent
+ regexp: 'vcpu_pin_set'
+
+- name: remove memory reserved for host
+ lineinfile:
+ dest: /etc/nova/nova.conf
+ state: absent
+ regexp: 'reserved_host_memory_mb'
diff --git a/ansible/roles/vcpu_pin_set_setup/tasks/main.yaml b/ansible/roles/vcpu_pin_set_setup/tasks/main.yaml
new file mode 100644
index 000000000..2a456ab9a
--- /dev/null
+++ b/ansible/roles/vcpu_pin_set_setup/tasks/main.yaml
@@ -0,0 +1,21 @@
+---
+##############################################################################
+# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+- name: set memory reserved for host
+ lineinfile:
+ dest: /etc/nova/nova.conf
+ insertafter: 'DEFAULT'
+ line: 'reserved_host_memory_mb={{host_memory}}'
+
+- name: set vcpu pin set
+ lineinfile:
+ dest: /etc/nova/nova.conf
+ insertafter: 'DEFAULT'
+ line: 'vcpu_pin_set={{cpu_set}}
diff --git a/ansible/roles/vcpu_pin_set_setup/vars/main.yaml b/ansible/roles/vcpu_pin_set_setup/vars/main.yaml
new file mode 100644
index 000000000..e5d407b44
--- /dev/null
+++ b/ansible/roles/vcpu_pin_set_setup/vars/main.yaml
@@ -0,0 +1,2 @@
+cpu_set: 0,2,4,6,8,10,12,14,16
+host_memory: 512