Run with Ansible¶
QTIP benchmarking tasks are built upon Ansible playbooks and roles. If you are familiar with Ansible, it is possible
to run it with ansible-playbook command. And it is useful during development of ansible modules or testing roles.
Create workspace¶
There is a playbook in resources/ansible_roles/qtip-workspace used for creating a new workspace:
cd resources/ansible_roles/qtip-workspace
ansible-playbook create.yml
NOTE: if this playbook is moved to other directory, configuration in ansible.cfg needs to be updated accordingly.
The ansible roles from QTIP, i.e. <path_of_qtip>/resources/ansible_roles must be added to roles_path in
Ansible configuration file. For example:
roles_path = ~/qtip/resources/ansible_roles
Executing benchmark¶
Before executing the setup playbook, make sure ~/.ssh/config has been configured properly so that you can login the
master node “directly”. Skip next section, if you can login with ssh <master-host> from localhost,
SSH access to master node¶
It is common that the master node is behind some jump host. In this case, ssh option ProxyCommand and ssh-agent
shall be required.
Assume that you need to login to deploy server, then login to the master node from there. An example configuration is as following:
Host fuel-deploy
HostName 172.50.0.250
User root
Host fuel-master
HostName 192.168.122.63
User root
ProxyCommand ssh -o 'ForwardAgent yes' apex-deploy 'ssh-add && nc %h %p'
If several jumps are required to reach the master node, we may chain the jump hosts like below:
Host jumphost
HostName 10.62.105.31
User zte
Port 22
Host fuel-deploy
HostName 172.50.0.250
User root
ProxyJump jumphost
Host fuel-master
HostName 192.168.122.63
User root
ProxyCommand ssh -o 'ForwardAgent yes' apex-deploy 'ssh-add && nc %h %p'
NOTE: ProxyJump is equivalent to the long ProxyCommand option, but it is only available since OpenSSH 7.3
Automatic setup¶
- Modify
<workspace>/group_vars/all.ymlto set installer information correctly - Modify
<workspace>/hostsfile to set installer master host correctly
#. Run the setup playbook to generate ansible inventory of system under test by querying the slave nodes from the installer master:
cd workspace
ansible-playbook setup.yml
It will update the hosts and ssh.cfg
Currently, QTIP supports automatic discovery from apex and fuel.
Manual setup¶
If your installer is not supported or you are
testing hosts not managed by installer, you may add them manually in [compute] group in <workspace>/hosts:
[compute:vars]
ansible_ssh_common_args=-F ./ssh.cfg
[compute]
node-2
node-4
node-6
node-7
And ssh.cfg for ssh connection configuration:
Host node-5
HostName 10.20.5.12
User root
Run the tests¶
Run the benchmarks with the following command:
ansible-playbook run.yml
CAVEAT: QTIP will install required packages in system under test.
Inspect the results¶
The test results and calculated output are stored in results:
current/
node-2/
arithmetic/
metric.json
report
unixbench.log
dpi/
...
node-4/
...
qtip-pod-qpi.json
qtip-pod-20170425-1710/
qtip-pod-20170425-1914/
...
The folders are named as <pod_name>-<start_time>/ and the results are organized by hosts under test. Inside each
host, the test data are organized by metrics as defined in QPI specification.
For each metrics, it usually includes the following content
- log file generated by the performance testing tool
- metrics collected from the log files
- reported rendered with the metrics collected
Teardown the test environment¶
QTIP will create temporary files for testing in system under test. Execute the teardown playbook to clean it up:
ansible-playbook teardown.yml