From e891e8ba06e489d77723874f7894451ec0d3e703 Mon Sep 17 00:00:00 2001 From: Alex Krzos Date: Tue, 16 Feb 2016 19:38:42 -0500 Subject: [PATCH] Starting performance tune playbook. Change-Id: I4cc76534051b1bc6377aa82fb74fcbc7232169ed --- ansible/README.md | 55 +++++++++++-------- ansible/tune/README.md | 4 ++ ansible/tune/group_vars/compute | 6 ++ ansible/tune/group_vars/controller | 6 ++ ansible/tune/roles/tuned/tasks/main.yml | 9 +++ .../udev_dhcp_all_interfaces/tasks/main.yml | 9 +++ ansible/tune/tune.yml | 11 ++++ 7 files changed, 78 insertions(+), 22 deletions(-) create mode 100644 ansible/tune/README.md create mode 100644 ansible/tune/group_vars/compute create mode 100644 ansible/tune/group_vars/controller create mode 100644 ansible/tune/roles/tuned/tasks/main.yml create mode 100644 ansible/tune/roles/udev_dhcp_all_interfaces/tasks/main.yml create mode 100644 ansible/tune/tune.yml diff --git a/ansible/README.md b/ansible/README.md index fbd257420..e0fb4de04 100644 --- a/ansible/README.md +++ b/ansible/README.md @@ -4,13 +4,17 @@ Currently we only support Ansible 1.9.4. Playbooks for: * Install Browbeat +* Install collectd * Install connmon -* Install pbench +* Install grafana dashboards * Install shaker * Check overcloud for performance issues -* Adjust number of workers for nova/keystone +* Tune overcloud for performance (Experimental) +* Adjust number of workers for cinder/keystone/neutron/nova * Deploy keystone in eventlet/httpd -* Switch keystone token type to UUID/Fernet +* Adjust keystone token type to UUID/Fernet +* Adjust neutron l3 agents +* Adjust nova greenlet_pool_size / max_overflow ## To use @@ -34,28 +38,28 @@ Install Browbeat # ansible-playbook -i hosts install/browbeat.yml ``` -Install Connmon -``` -# ansible-playbook -i hosts install/connmon.yml -``` - -Install Pbench (Requires some knowledge of setting up pbench to have this functionality work completely) -``` -# ansible-playbook -i hosts install/pbench.yml -``` - -Install Shaker -``` -# ansible-playbook -i hosts install/shaker.yml -``` - -Install Collectd Agent +Install Collectd Agent (Requires a Graphite Server) Prior to installing the agent, please review the install/group_vars/all to ensure the correct params are passed ``` # ansible-playbook -i hosts install/collectd ``` +Install Connmon +``` +# ansible-playbook -i hosts install/connmon.yml +``` + +Install Grafana Dashboards (Requires a Grafana Server) +* Review install/group_vars/all before deploying the grafana dashboards +``` +# ansible-playbook -i hosts install/dashboards.yml +``` + +Install Shaker +``` +# ansible-playbook -i hosts install/shaker.yml +``` ## Performance Checks: @@ -64,22 +68,29 @@ Run the check playbook to identify common performance issues: # ansible-playbook -i hosts check/site.yml ``` +## Performance Tune: + +Run the tune playbook to tune your OSPd deployed cloud for performance: +``` +# ansible-playbook -i hosts tune/tune.yml +``` + ## Adjust your overcloud: To modify the number of workers each service is running: ``` -# ansible-playbook -i hosts browbeat/adjustment.yml -e "workers=8" +# ansible-playbook -i hosts browbeat/adjustment-workers.yml -e "workers=8" ``` Nova and Keystone will be running 8 workers per service. To modify number of workers each service is running and ensure Keystone is deployed in eventlet: ``` -# ansible-playbook -i hosts browbeat/adjustment.yml -e "workers=8 keystone_deployment=eventlet" +# ansible-playbook -i hosts browbeat/adjustment-workers.yml -e "workers=8 keystone_deployment=eventlet" ``` To run Keystone in httpd, change keystone_deployment to httpd: ``` -# ansible-playbook -i hosts browbeat/adjustment.yml -e "workers=8 keystone_deployment=httpd" +# ansible-playbook -i hosts browbeat/adjustment-workers.yml -e "workers=8 keystone_deployment=httpd" ``` To switch to fernet tokens: diff --git a/ansible/tune/README.md b/ansible/tune/README.md new file mode 100644 index 000000000..ba0f10518 --- /dev/null +++ b/ansible/tune/README.md @@ -0,0 +1,4 @@ +# Browbeat OSP Performance Tuning Playbook +This playbook aims to tune OSP deployed on Red Hat Enterprise Linux. + +The playbook in here is currently experimental. diff --git a/ansible/tune/group_vars/compute b/ansible/tune/group_vars/compute new file mode 100644 index 000000000..644e17a4e --- /dev/null +++ b/ansible/tune/group_vars/compute @@ -0,0 +1,6 @@ +--- +# +# Tuning vars for computes +# + +tuned_profile: virtual-host diff --git a/ansible/tune/group_vars/controller b/ansible/tune/group_vars/controller new file mode 100644 index 000000000..3bfb63d5e --- /dev/null +++ b/ansible/tune/group_vars/controller @@ -0,0 +1,6 @@ +--- +# +# Tuning vars for controllers +# + +tuned_profile: throughput-performance diff --git a/ansible/tune/roles/tuned/tasks/main.yml b/ansible/tune/roles/tuned/tasks/main.yml new file mode 100644 index 000000000..38187f399 --- /dev/null +++ b/ansible/tune/roles/tuned/tasks/main.yml @@ -0,0 +1,9 @@ +--- +# +# Sets correct tuned profile on each host +# See https://bugzilla.redhat.com/show_bug.cgi?id=1246645 +# + +- name: Set tuned profile + become: true + command: tuned-adm profile {{ tuned_profile }} diff --git a/ansible/tune/roles/udev_dhcp_all_interfaces/tasks/main.yml b/ansible/tune/roles/udev_dhcp_all_interfaces/tasks/main.yml new file mode 100644 index 000000000..6f9b758b1 --- /dev/null +++ b/ansible/tune/roles/udev_dhcp_all_interfaces/tasks/main.yml @@ -0,0 +1,9 @@ +--- +# +# Removes 99-dhcp-all-interfaces.rules to prevent creating failed systemd resources +# See https://bugzilla.redhat.com/show_bug.cgi?id=1293712 +# + +- name: Remove 99-dhcp-all-interfaces.rules + become: true + file: path=/etc/udev/rules.d/99-dhcp-all-interfaces.rules state=absent diff --git a/ansible/tune/tune.yml b/ansible/tune/tune.yml new file mode 100644 index 000000000..cb6011749 --- /dev/null +++ b/ansible/tune/tune.yml @@ -0,0 +1,11 @@ +--- +# +# Tunes overcloud for browbeat/performance +# + +- hosts: controller:compute + gather_facts: false + remote_user: heat-admin + roles: + - udev_dhcp_all_interfaces + - tuned