From 35c935ece990d6ee00004212b99737e4ed18ffc7 Mon Sep 17 00:00:00 2001 From: Dustin Black Date: Wed, 31 Jan 2018 11:17:42 -0500 Subject: [PATCH 1/4] move perf-related file paths to vars; enable continue on perf playbook failure --- ansible/g1-perf-test.yml | 8 ++++---- gluster-colonizer.py | 12 ++++++++++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/ansible/g1-perf-test.yml b/ansible/g1-perf-test.yml index e7710dc..6e40d9b 100644 --- a/ansible/g1-perf-test.yml +++ b/ansible/g1-perf-test.yml @@ -35,13 +35,13 @@ run_once: true template: src: g1-jobfile-fio.j2 - dest: "/root/g1-perf-jobfile.fio" + dest: "{{ perf_jobfile }}" - name: Create server list file delegate_to: "{{ play_hosts[0] }}" run_once: true file: - dest: /root/g1-perf-server.list + dest: "{{ perf_server_list }}" mode: 0644 state: touch @@ -49,7 +49,7 @@ delegate_to: "{{ play_hosts[0] }}" run_once: true lineinfile: - dest: /root/g1-perf-server.list + dest: "{{ perf_server_list }}" state: present regexp: "^{{ item['node'] }}" line: "{{ item['node'] }}" @@ -63,7 +63,7 @@ - name: Start fio client request delegate_to: "{{ play_hosts[0] }}" run_once: true - shell: /bin/bash -c '/bin/fio --output=/root/g1-perf-results.out --client=/root/g1-perf-server.list /root/g1-perf-jobfile.fio' + shell: /bin/bash -c '/bin/fio --output={{ perf_output }} --client={{ perf_server_list }}{{ perf_jobfile }}' #- name: Analyze performance results #TODO diff --git a/gluster-colonizer.py b/gluster-colonizer.py index 1ab5571..738b89a 100755 --- a/gluster-colonizer.py +++ b/gluster-colonizer.py @@ -111,6 +111,11 @@ peerInventory = "/var/tmp/peerInventory.ansible-" + "".join(random.sample(rand_filename_sample, rand_filename_len)) ansible_ssh_key = "/home/ansible/.ssh/id_rsa" +# Performance test files +perf_jobfile = "/var/tmp/g1-perf-jobfile.fio-" + "".join(random.sample(rand_filename_sample, rand_filename_len)) +perf_server_list = "/var/tmp/g1-perf-server.list-" + "".join(random.sample(rand_filename_sample, rand_filename_len)) +perf_output = "/root/g1-perf-results.out" + # Set maximum number of nodes # TODO: Move this to OEMID file nodes_max = 24 @@ -1239,8 +1244,11 @@ def autoNodeInformation(): if run_perf_tests: logger.info("Beginning performance tests. Please be patient...") - run_ansible_playbook(g1_path + '/ansible/g1-perf-test.yml --extra-vars="{default_volname: ' + str(default_volname) + ',replica_peers: ' + str(peer_list_min) + ',arbiter: ' + str(arbiter) +'}"') - logger.info("Performance tests complete.") + perf_tests_complete = run_ansible_playbook(g1_path + '/ansible/g1-perf-test.yml --extra-vars="{default_volname: ' + str(default_volname) + ',replica_peers: ' + str(peer_list_min) + ',arbiter: ' + str(arbiter) + ',perf_jobfile: ' + str(perf_jobfile) + ',perf_server_list: ' + str(perf_server_list) + ',perf_output : ' + str(perf_output) + '}"', continue_on_fail=True) + if perf_tests_complete: + logger.info("Performance tests complete.") + else: + logger.warning("Performance tests failed. Please see log for more information.") else: logger.warning("Performance tests skipped") #TODO: Add instructions for running the performance tests later From 7e4cd4c1356be5a7bcaaaf6ca7677b818093c882 Mon Sep 17 00:00:00 2001 From: Dustin Black Date: Wed, 31 Jan 2018 11:19:06 -0500 Subject: [PATCH 2/4] Display path to perf output file to user --- gluster-colonizer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gluster-colonizer.py b/gluster-colonizer.py index 738b89a..e05a6b8 100755 --- a/gluster-colonizer.py +++ b/gluster-colonizer.py @@ -1246,7 +1246,7 @@ def autoNodeInformation(): logger.info("Beginning performance tests. Please be patient...") perf_tests_complete = run_ansible_playbook(g1_path + '/ansible/g1-perf-test.yml --extra-vars="{default_volname: ' + str(default_volname) + ',replica_peers: ' + str(peer_list_min) + ',arbiter: ' + str(arbiter) + ',perf_jobfile: ' + str(perf_jobfile) + ',perf_server_list: ' + str(perf_server_list) + ',perf_output : ' + str(perf_output) + '}"', continue_on_fail=True) if perf_tests_complete: - logger.info("Performance tests complete.") + logger.info("Performance tests complete. Results at: %s" % str(perf_output)) else: logger.warning("Performance tests failed. Please see log for more information.") else: From 520a51532f4dbc342bfd1ffdf0fc77d5369f01f3 Mon Sep 17 00:00:00 2001 From: Dustin Black Date: Wed, 31 Jan 2018 11:20:08 -0500 Subject: [PATCH 3/4] syntax fix --- ansible/g1-perf-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/g1-perf-test.yml b/ansible/g1-perf-test.yml index 6e40d9b..f1f0d57 100644 --- a/ansible/g1-perf-test.yml +++ b/ansible/g1-perf-test.yml @@ -63,7 +63,7 @@ - name: Start fio client request delegate_to: "{{ play_hosts[0] }}" run_once: true - shell: /bin/bash -c '/bin/fio --output={{ perf_output }} --client={{ perf_server_list }}{{ perf_jobfile }}' + shell: /bin/bash -c '/bin/fio --output={{ perf_output }} --client={{ perf_server_list }} {{ perf_jobfile }}' #- name: Analyze performance results #TODO From 32d7315bd844bed7ba5f0bb7967250543f8793d4 Mon Sep 17 00:00:00 2001 From: Dustin Black Date: Wed, 31 Jan 2018 16:37:37 -0500 Subject: [PATCH 4/4] add play to populate perf server list for disperse volumes; modify command to call playbook to avoid passing nonexistent variable --- ansible/g1-perf-test.yml | 11 +++++++++++ gluster-colonizer.py | 6 +++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/ansible/g1-perf-test.yml b/ansible/g1-perf-test.yml index f1f0d57..075b8b2 100644 --- a/ansible/g1-perf-test.yml +++ b/ansible/g1-perf-test.yml @@ -58,6 +58,17 @@ #TODO: server list for non-arbiter + - name: Populate server list file + delegate_to: "{{ play_hosts[0] }}" + run_once: true + lineinfile: + dest: "{{ perf_server_list }}" + state: present + regexp: "^{{ item }}" + line: "{{ item }}" + with_items: "{{ hostnames }}" + when: arbiter != True + - shell: /bin/bash -c 'echo "Starting performance tests..." > {{ fifo }}' - name: Start fio client request diff --git a/gluster-colonizer.py b/gluster-colonizer.py index e05a6b8..c82f776 100755 --- a/gluster-colonizer.py +++ b/gluster-colonizer.py @@ -1244,7 +1244,11 @@ def autoNodeInformation(): if run_perf_tests: logger.info("Beginning performance tests. Please be patient...") - perf_tests_complete = run_ansible_playbook(g1_path + '/ansible/g1-perf-test.yml --extra-vars="{default_volname: ' + str(default_volname) + ',replica_peers: ' + str(peer_list_min) + ',arbiter: ' + str(arbiter) + ',perf_jobfile: ' + str(perf_jobfile) + ',perf_server_list: ' + str(perf_server_list) + ',perf_output : ' + str(perf_output) + '}"', continue_on_fail=True) + playbook_args = g1_path + '/ansible/g1-perf-test.yml --extra-vars="{default_volname: ' + str(default_volname) + ',hostnames: ' + str(hostnames) + ',arbiter: ' + str(arbiter) + ',perf_jobfile: ' + str(perf_jobfile) + ',perf_server_list: ' + str(perf_server_list) + ',perf_output : ' + str(perf_output) + if 'peer_set' in globals(): + playbook_args += ',replica_peers: ' + str(peer_list_min) + playbook_args += '}"' + perf_tests_complete = run_ansible_playbook(playbook_args, continue_on_fail=True) if perf_tests_complete: logger.info("Performance tests complete. Results at: %s" % str(perf_output)) else: