From 3ae86533381262df9082e36137cf67087a841c1b Mon Sep 17 00:00:00 2001 From: Chris Dent Date: Wed, 21 Nov 2018 13:59:45 +0000 Subject: [PATCH] Use a smaller base job for the perfload run In this job we install placement by hand, based on the instructions in https://docs.openstack.org/placement/latest/contributor/quick-dev.html and run the placeload command against it. This avoids a lot of node set up time. * mysql is installed, placement is installed, uwsgi is installed * the database is synced * the service started, via uwsgi, which run with 5 processs each with 25 threads, otherwise writing the resource providers is very slow and causes errors in placeload. It's an 8 core vm. * placeload is called A post.yaml is added to get the generated logs back to zuul. Change-Id: I93875e3ce1f77fdb237e339b7b3e38abe3dad8f7 --- .zuul.yaml | 18 +++--------- playbooks/perfload.yaml | 64 ++++++++++++++++++++++++++--------------- playbooks/post.yaml | 9 ++++++ 3 files changed, 54 insertions(+), 37 deletions(-) create mode 100644 playbooks/post.yaml diff --git a/.zuul.yaml b/.zuul.yaml index b0e3c62a4..c6b59ab31 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -22,23 +22,13 @@ - openstack-tox-functional-py35 - openstack-tox-functional-py36 -# TODO(cdent): Using devstack (even minimal) here is more than we need. We -# ought to be able to take a blank node, install placement on it, use -# environment variables for configuration, run placeload, and collect the logs. -# However, that requires more knowledge of zuul and ansible than I currently -# have and we can iterate. - job: name: placement-perfload - parent: devstack-minimal + parent: base description: | - Run a tiny devstack with just placement and keystone and log placement - performance. + A simple node on which to run placement with the barest of configs and + make performance related tests against it. required-projects: - - git.openstack.org/openstack/keystone - git.openstack.org/openstack/placement run: playbooks/perfload.yaml - vars: - devstack_services: - mysql: true - placement-api: true - key: true + post-run: playbooks/post.yaml diff --git a/playbooks/perfload.yaml b/playbooks/perfload.yaml index 5be09f6dc..03f85e940 100644 --- a/playbooks/perfload.yaml +++ b/playbooks/perfload.yaml @@ -1,9 +1,3 @@ -- hosts: all - # Do the default devstack orchestration and then follow with perfload - strategy: linear - roles: - - orchestrate-devstack - - hosts: all tasks: # Borrowed from devstack tasks but we want it early. @@ -13,7 +7,39 @@ path: "{{ ansible_user_dir }}/logs" state: directory owner: "{{ ansible_user }}" + - name: start placement + args: + chdir: "{{ ansible_user_dir }}/src/git.openstack.org/openstack/placement" + shell: + executable: /bin/bash + cmd: | + set -x + # TODO(cdent): Presumably ansible can do this, perhaps with 'package'. + # create database + sudo debconf-set-selections <