Add test plan/results for fuel-ccp

Change-Id: Ice1e61362748a31fae6ebb10e42e5e550831686c
This commit is contained in:
Dina Belova 2016-09-27 23:35:35 -07:00
parent a4af2fab72
commit 1ef9268e1a
35 changed files with 5934 additions and 0 deletions

View File

@ -0,0 +1,573 @@
.. _fuel_ccp_test_plan:
====================================================
Fuel Containerized Control Plane performance testing
====================================================
:status: **ready**
:version: 1.0
:Abstract:
This test plan aims to provide set of tests to identify OpenStack
performance against given containerized OpenStack cloud (installed
on the top of pre-deployed Kubernetes cluster) using simple minimalistic set
of Rally tests.
Test Plan
=========
This document is inspired by
:ref:`openstack_control_plane_performance_test_plan`, and aims to cover
baseline cloud operations and extend this test suite to verify containerized
deployment approach. As :ref:`openstack_control_plane_performance_test_plan`
this test plan covers basic cloud operations e.g. VMs creation, work with the
security groups, authentication and more, as well as long-running test suites
to verify cloud stability.
Test Environment
----------------
Preparation
^^^^^^^^^^^
This test plan is performed against existing OpenStack cloud installed on top
of pre-deployed Kubernetes cluster with `fuel-ccp`_ tool with pre-installed Rally
framework.
.. _fuel-ccp: http://fuel-ccp.readthedocs.io/en/latest/
Environment description
^^^^^^^^^^^^^^^^^^^^^^^
The environment description includes hardware specification of servers,
network parameters, operation system and OpenStack deployment characteristics.
Hardware
~~~~~~~~
This section contains list of all types of hardware nodes (table below is
an example).
+-----------+-------+----------------------------------------------------+
| Parameter | Value | Comments |
+-----------+-------+----------------------------------------------------+
| model | | e.g. Supermicro X9SRD-F |
+-----------+-------+----------------------------------------------------+
| CPU | | e.g. 6 x Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz |
+-----------+-------+----------------------------------------------------+
| role | | e.g. compute or network |
+-----------+-------+----------------------------------------------------+
Network
~~~~~~~
This section contains list of interfaces and network parameters. For
complicated cases this section may include topology diagram and switch
parameters (table below is an example).
+------------------+-------+-------------------------+
| Parameter | Value | Comments |
+------------------+-------+-------------------------+
| network role | | e.g. provider or public |
+------------------+-------+-------------------------+
| card model | | e.g. Intel |
+------------------+-------+-------------------------+
| driver | | e.g. ixgbe |
+------------------+-------+-------------------------+
| speed | | e.g. 10G or 1G |
+------------------+-------+-------------------------+
| MTU | | e.g. 9000 |
+------------------+-------+-------------------------+
| offloading modes | | e.g. default |
+------------------+-------+-------------------------+
Software
~~~~~~~~
This section describes installed software (table below is an example).
+-----------------+-------+---------------------------+
| Parameter | Value | Comments |
+-----------------+-------+---------------------------+
| OS | | e.g. Ubuntu 14.04.3 |
+-----------------+-------+---------------------------+
| OpenStack | | e.g. Mitaka |
+-----------------+-------+---------------------------+
| Hypervisor | | e.g. KVM |
+-----------------+-------+---------------------------+
| Neutron plugin | | e.g. ML2 + OVS |
+-----------------+-------+---------------------------+
| L2 segmentation | | e.g. VLAN / VxLAN / GRE |
+-----------------+-------+---------------------------+
| virtual routers | | e.g. HA / DVR |
+-----------------+-------+---------------------------+
Test tool
---------
**Rally** is a benchmarking tool that was designed specifically for OpenStack
API testing. To make this possible, **Rally** automates and unifies multi-node
OpenStack deployment, cloud verification, benchmarking & profiling. This is a
simple way to check cloud workability and performance of control plane
operations running on it.
Test Case 1: Boot and delete server
-----------------------------------
Description
^^^^^^^^^^^
The most user-facing control plane operation is new virtual machine creation.
This scenario covers the most basic OpenStack server creation to present the
baseline numbers for Nova (OpenStack Compute) control plane.
Parameters
^^^^^^^^^^
+-------------------------+-----------------------------------------+
|Name | Description |
+=========================+=========================================+
|IMAGE | Image from which boot server |
+-------------------------+-----------------------------------------+
|FLAVOR | Flavor type from which boot server |
+-------------------------+-----------------------------------------+
|ASSIGN_NIC | Bool, whether or not to auto assign |
| | NICs in Rally scenario |
+-------------------------+-----------------------------------------+
|CONCURRENCY | Amount of parallel executors |
+-------------------------+-----------------------------------------+
|ITERATIONS | Total amount of iterations processed by |
| | all executors |
+-------------------------+-----------------------------------------+
List of performance metrics
^^^^^^^^^^^^^^^^^^^^^^^^^^^
+----------+-------+-------------------+---------------------------+
| Priority | Value | Measurement Units | Description |
+==========+=======+===================+===========================+
| 1 | | sec | Time of atomic operations |
+----------+-------+-------------------+---------------------------+
Measuring performance values
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1. Create server with FLAVOR flavor from IMAGE image through Nova API
2. Delete server through Nova API.
These 2 steps executed successively in CONCURRENCY parallel executors.
ASSIGN_NIC parameter reflects Rally scenario configuration whether to assign
NIC to the booted server in automatic fashion.
One cycle of these 2 steps is called an iteration.
ITERATIONS is a total amount of iterations which was processed by executors.
At the end of this test case you should calculate average, 90% percentile,
50% percentile, minimum and maximum for each step. You need to fill the
following tables with calculated values:
Nova
----
+---------------+------+--------+--------+-------+-------+
| Operation | Mean | 90%ile | 50%ile | Max | Min |
| | (sec)| (sec) | (sec) | (sec) | (sec) |
+===============+======+========+========+=======+=======+
| create_server | | | | | |
+---------------+------+--------+--------+-------+-------+
| delete_server | | | | | |
+---------------+------+--------+--------+-------+-------+
Example of Rally scenario configuration
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. literalinclude:: test_plans/021-nova-boot-and-delete-baseline.yaml
:language: bash
Test Case 2: Boot and delete server with security groups
--------------------------------------------------------
Description
^^^^^^^^^^^
The most user-facing control plane operation is new virtual machine creation.
At the same time security groups management is very time consuming operation
in case of lots VMs attached to the same security group, therefore it's vital
to understand these operations performance. Standard Rally scanario is used for
this purpose (comparing with
:ref:`openstack_control_plane_performance_test_plan` fuel-ccp does not support
yet Cinder installation or appropriate Nova configuration to support live
migrations, so there is no need to write separated plugin to cover these
operations).
Parameters
^^^^^^^^^^
+-------------------------+-----------------------------------------+
|Name | Description |
+=========================+=========================================+
|IMAGE | Image from which boot server |
+-------------------------+-----------------------------------------+
|FLAVOR | Flavor type from which boot server |
+-------------------------+-----------------------------------------+
|SEC_GROUP_COUNT | Count of security groups |
| | to be created in one iteration |
+-------------------------+-----------------------------------------+
|RULES_PER_SECURITY_GROUP | Count of rules to be added to |
| | each security group |
+-------------------------+-----------------------------------------+
|CONCURRENCY | Amount of parallel executors |
+-------------------------+-----------------------------------------+
|ITERATIONS | Total amount of iterations processed by |
| | all executors |
+-------------------------+-----------------------------------------+
List of performance metrics
^^^^^^^^^^^^^^^^^^^^^^^^^^^
+----------+-------+-------------------+---------------------------+
| Priority | Value | Measurement Units | Description |
+==========+=======+===================+===========================+
| 1 | | sec | Time of atomic operations |
+----------+-------+-------------------+---------------------------+
Measuring performance values
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1. Successively create SEC_GROUP_COUNT security groups through Nova API.
Duration of this step represent time that control plane process
create_SEC_GROUP_COUNT_security_groups atomic operation.
2. Successively create RULES_PER_SECURITY_GROUP rules for security
groups through Nova API.
3. Create server with FLAVOR flavor from IMAGE image through Nova API
4. List all security groups through Nova API.
5. Delete server through Nova API.
6. Successively delete SEC_GROUP_COUNT security group through Nova API.
These 6 steps executed successively in CONCURRENCY parallel executors.
One cycle of these 6 steps is called an iteration.
ITERATIONS is a total amount of iterations which was processed by executors.
At the end of this test case you should calculate average, 90% percentile,
50% percentile, minimum and maximum for each step. You need to fill the
following tables with calculated values:
Neutron
-------
+--------------------------+------+--------+--------+-------+-------+
| Operation | Mean | 90%ile | 50%ile | Max | Min |
| | (sec)| (sec) | (sec) | (sec) | (sec) |
+==========================+======+========+========+=======+=======+
| create_N_security_groups | | | | | |
+--------------------------+------+--------+--------+-------+-------+
| delete_N_security_groups | | | | | |
+--------------------------+------+--------+--------+-------+-------+
| create_M_rules | | | | | |
+--------------------------+------+--------+--------+-------+-------+
| delete_M_rules | | | | | |
+--------------------------+------+--------+--------+-------+-------+
.. note::
Change operation name to appropriate regarding SEC_GROUP_COUNT and
RULES_PER_SECURITY_GROUP values.
Nova
----
+---------------+------+--------+--------+-------+-------+
| Operation | Mean | 90%ile | 50%ile | Max | Min |
| | (sec)| (sec) | (sec) | (sec) | (sec) |
+===============+======+========+========+=======+=======+
| create_server | | | | | |
+---------------+------+--------+--------+-------+-------+
| delete_server | | | | | |
+---------------+------+--------+--------+-------+-------+
Example of Rally scenario configuration
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. literalinclude:: test_plans/041-nova-boot-and-delete-with-secgroups-baseline.yaml
:language: bash
Test Case 3: Boot and list servers
----------------------------------
Description
^^^^^^^^^^^
This scenario covers density aspect of server creation control plane
operation and checks how many virtual machines can be booted on top
of containerized OpenStack.
Parameters
^^^^^^^^^^
+-------------------------+-----------------------------------------+
|Name | Description |
+=========================+=========================================+
|IMAGE | Image from which boot server |
+-------------------------+-----------------------------------------+
|FLAVOR | Flavor type from which boot server |
+-------------------------+-----------------------------------------+
|CONCURRENCY | Amount of parallel executors |
+-------------------------+-----------------------------------------+
|ITERATIONS | Total amount of iterations processed by |
| | all executors |
+-------------------------+-----------------------------------------+
List of performance metrics
^^^^^^^^^^^^^^^^^^^^^^^^^^^
+----------+-------+-------------------+---------------------------+
| Priority | Value | Measurement Units | Description |
+==========+=======+===================+===========================+
| 1 | | sec | Time of atomic operations |
+----------+-------+-------------------+---------------------------+
Measuring performance values
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1. Create server with FLAVOR flavor from IMAGE image through Nova API
2. List all existing servers through Nova API.
These 2 steps executed successively in CONCURRENCY parallel executors.
One cycle of these 2 steps is called an iteration.
ITERATIONS is a total amount of iterations which was processed by executors.
At the end of this test case you should calculate average, 90% percentile,
50% percentile, minimum and maximum for each step. You need to fill the
following tables with calculated values:
Nova
----
+---------------+------+--------+--------+-------+-------+
| Operation | Mean | 90%ile | 50%ile | Max | Min |
| | (sec)| (sec) | (sec) | (sec) | (sec) |
+===============+======+========+========+=======+=======+
| create_server | | | | | |
+---------------+------+--------+--------+-------+-------+
| list_servers | | | | | |
+---------------+------+--------+--------+-------+-------+
Example of Rally scenario configuration
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. literalinclude:: test_plans/051-nova-boot-and-list-baseline.yaml
:language: bash
Test Case 4: Create and delete image
------------------------------------
Description
^^^^^^^^^^^
To cover Glance control plane operations simple create and delete image
scenario can be used.
Parameters
^^^^^^^^^^
+-----------------+-----------------------------------------+
|Name | Description |
+=================+=========================================+
|IMAGE | Image to upload to glance |
+-----------------+-----------------------------------------+
|CONTAINER_FORMAT | Container format to create |
+-----------------+-----------------------------------------+
|DISK_FORMAT | Disk format to create |
+-----------------+-----------------------------------------+
|CONCURRENCY | Amount of parallel executors |
+-----------------+-----------------------------------------+
|ITERATIONS | Total amount of iterations processed by |
| | all executors |
+-----------------+-----------------------------------------+
List of performance metrics
^^^^^^^^^^^^^^^^^^^^^^^^^^^
+----------+-------+-------------------+---------------------------+
| Priority | Value | Measurement Units | Description |
+==========+=======+===================+===========================+
| 1 | | sec | Time of atomic operations |
+----------+-------+-------------------+---------------------------+
Measuring performance values
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1. Create image from IMAGE with CONTAINER_FORMAT container format and
DISK_FORMAT disk format through Glance API.
2. Delete image from Glance through Glance API.
These 2 steps executed successively in CONCURRENCY parallel executors.
One cycle of thee 2 steps is called an iteration.
ITERATIONS is a total amount of iterations which was processed by executors.
At the end of this test case you should calculate average, 90% percentile,
50% percentile, minimum and maximum for each step. You need to fill the
following tables with calculated values:
Glance
------
+--------------+------+--------+--------+-------+-------+
| Operation | Mean | 90%ile | 50%ile | Max | Min |
| | (sec)| (sec) | (sec) | (sec) | (sec) |
+==============+======+========+========+=======+=======+
| create_image | | | | | |
+--------------+------+--------+--------+-------+-------+
| delete_image | | | | | |
+--------------+------+--------+--------+-------+-------+
Example of Rally scenario configuration
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. literalinclude:: test_plans/011-glance-create-and-delete-1g-image.yaml
:language: bash
Test Case 5: Create and list images
-----------------------------------
Description
^^^^^^^^^^^
To cover Glance control plane operations simple create and list images scenario
can be used.
Parameters
^^^^^^^^^^
+-----------------+-----------------------------------------+
|Name | Description |
+=================+=========================================+
|IMAGE | Image to upload to glance |
+-----------------+-----------------------------------------+
|CONTAINER_FORMAT | Container format to create |
+-----------------+-----------------------------------------+
|DISK_FORMAT | Disk format to create |
+-----------------+-----------------------------------------+
|CONCURRENCY | Amount of parallel executors |
+-----------------+-----------------------------------------+
|ITERATIONS | Total amount of iterations processed by |
| | all executors |
+-----------------+-----------------------------------------+
List of performance metrics
^^^^^^^^^^^^^^^^^^^^^^^^^^^
+----------+-------+-------------------+---------------------------+
| Priority | Value | Measurement Units | Description |
+==========+=======+===================+===========================+
| 1 | | sec | Time of atomic operations |
+----------+-------+-------------------+---------------------------+
Measuring performance values
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1. Create image from IMAGE with CONTAINER_FORMAT container format and
DISK_FORMAT disk format through Glance API.
2. List existing images through Glance API.
These 2 steps executed successively in CONCURRENCY parallel executors.
One cycle of thee 2 steps is called an iteration.
ITERATIONS is a total amount of iterations which was processed by executors.
At the end of this test case you should calculate average, 90% percentile,
50% percentile, minimum and maximum for each step. You need to fill the
following tables with calculated values:
Glance
------
+--------------+------+--------+--------+-------+-------+
| Operation | Mean | 90%ile | 50%ile | Max | Min |
| | (sec)| (sec) | (sec) | (sec) | (sec) |
+==============+======+========+========+=======+=======+
| create_image | | | | | |
+--------------+------+--------+--------+-------+-------+
| list_images | | | | | |
+--------------+------+--------+--------+-------+-------+
Example of Rally scenario configuration
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. literalinclude:: test_plans/012-glance-create-and-list-image.yaml
:language: bash
Test case 6: Keystone authentication
------------------------------------
Description
^^^^^^^^^^^
To cover Keystone control plane operations simple authenticate
scenario can be used.
Parameters
^^^^^^^^^^
+------------------+-----------------------------------------+
| Name | Description |
+==================+=========================================+
| RPS | Generated load |
+------------------+-----------------------------------------+
| ITERATIONS | Total amount of iterations processed by |
| | all executors |
+------------------+-----------------------------------------+
Measuring performance values
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1. Authenticate in Keystone through Keystone API.
This step is executed in parallel on multiple executors to generate
RPS load.
Execution of this step is called an iteration.
ITERATIONS is a total amount of iterations which was processed by executors.
At the end of this test case you should calculate average, 90% percentile,
50% percentile, minimum and maximum for each step. You need to fill the
following tables with calculated values:
Keystone
--------
+--------------+------+--------+--------+-------+-------+
| Operation | Mean | 90%ile | 50%ile | Max | Min |
| | (sec)| (sec) | (sec) | (sec) | (sec) |
+==============+======+========+========+=======+=======+
| authenticate | | | | | |
+--------------+------+--------+--------+-------+-------+
List of performance metrics
^^^^^^^^^^^^^^^^^^^^^^^^^^^
+----------+-------+-------------------+---------------------------+
| Priority | Value | Measurement Units | Description |
+==========+=======+===================+===========================+
| 1 | | sec | Time of atomic operations |
+----------+-------+-------------------+---------------------------+
Example of Rally scenario configuration
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. literalinclude:: test_plans/001-keystone-authenticate-90-rps.yaml
:language: bash
Reports
=======
Test plan execution reports:
* :ref:`fuel_ccp_test_report`

View File

@ -0,0 +1,14 @@
---
Authenticate.keystone:
-
runner:
type: "rps"
times: 120000
rps: 60
context:
users:
tenants: 10
users_per_tenant: 10
sla:
failure_rate:
max: 0

View File

@ -0,0 +1,14 @@
---
Authenticate.keystone:
-
runner:
type: "rps"
times: 120000
rps: 90
context:
users:
tenants: 10
users_per_tenant: 10
sla:
failure_rate:
max: 0

View File

@ -0,0 +1,14 @@
---
Authenticate.keystone:
-
runner:
type: "rps"
times: 120000
rps: 120
context:
users:
tenants: 10
users_per_tenant: 10
sla:
failure_rate:
max: 0

View File

@ -0,0 +1,14 @@
---
Authenticate.keystone:
-
runner:
type: "rps"
times: 120000
rps: 180
context:
users:
tenants: 10
users_per_tenant: 10
sla:
failure_rate:
max: 0

View File

@ -0,0 +1,18 @@
---
GlanceImages.create_and_delete_image:
-
args:
image_location: "{{ image_server_url }}/cirros.img"
container_format: "bare"
disk_format: "qcow2"
runner:
type: "constant"
times: 400
concurrency: 50
context:
users:
tenants: 2
users_per_tenant: 3
sla:
failure_rate:
max: 0

View File

@ -0,0 +1,18 @@
---
GlanceImages.create_and_delete_image:
-
args:
image_location: "{{ image_server_url }}/1g.img"
container_format: "bare"
disk_format: "qcow2"
runner:
type: "constant"
times: 400
concurrency: 50
context:
users:
tenants: 2
users_per_tenant: 3
sla:
failure_rate:
max: 0

View File

@ -0,0 +1,18 @@
---
GlanceImages.create_and_list_image:
-
args:
image_location: "{{ image_server_url }}/cirros.img"
container_format: "bare"
disk_format: "qcow2"
runner:
type: "constant"
times: 200
concurrency: 50
context:
users:
tenants: 2
users_per_tenant: 3
sla:
failure_rate:
max: 0

View File

@ -0,0 +1,35 @@
---
NovaServers.boot_and_delete_server:
-
args:
flavor:
name: "^scaletest$"
image:
name: "^cirros$"
force_delete: false
runner:
type: "constant"
times: {{ 1 * computes_count }}
concurrency: 5
context:
users:
tenants: 10
users_per_tenant: 10
quotas:
nova:
instances: -1
cores: -1
ram: -1
floating_ips: -1
security_groups: -1
security_group_rules: -1
neutron:
network: -1
security_group: -1
security_group_rule: -1
port: -1
subnet: -1
router: -1
sla:
failure_rate:
max: 0

View File

@ -0,0 +1,35 @@
---
NovaServers.boot_and_delete_server:
-
args:
flavor:
name: "^scaletest$"
image:
name: "^cirros$"
force_delete: false
runner:
type: "constant"
times: {{ 5 * computes_count }}
concurrency: 5
context:
users:
tenants: 10
users_per_tenant: 10
quotas:
nova:
instances: -1
cores: -1
ram: -1
floating_ips: -1
security_groups: -1
security_group_rules: -1
neutron:
network: -1
security_group: -1
security_group_rule: -1
port: -1
subnet: -1
router: -1
sla:
failure_rate:
max: 0

View File

@ -0,0 +1,35 @@
---
NovaServers.boot_and_delete_server:
-
args:
flavor:
name: "^scaletest$"
image:
name: "^cirros$"
force_delete: false
runner:
type: "constant"
times: {{ 40 * computes_count }}
concurrency: 10
context:
users:
tenants: 10
users_per_tenant: 10
quotas:
nova:
instances: -1
cores: -1
ram: -1
floating_ips: -1
security_groups: -1
security_group_rules: -1
neutron:
network: -1
security_group: -1
security_group_rule: -1
port: -1
subnet: -1
router: -1
sla:
failure_rate:
max: 0

View File

@ -0,0 +1,38 @@
---
NovaServers.boot_and_delete_server:
-
args:
flavor:
name: "^scaletest$"
image:
name: "^cirros$"
auto_assign_nic: true
runner:
type: "constant"
times: {{ 1 * computes_count }}
concurrency: 5
context:
users:
tenants: 10
users_per_tenant: 10
quotas:
nova:
instances: -1
cores: -1
ram: -1
floating_ips: -1
security_groups: -1
security_group_rules: -1
neutron:
network: -1
security_group: -1
security_group_rule: -1
port: -1
subnet: -1
router: -1
network:
start_cidr: "{{ network_cidr }}"
networks_per_tenant: 2
sla:
failure_rate:
max: 0

View File

@ -0,0 +1,38 @@
---
NovaServers.boot_and_delete_server:
-
args:
flavor:
name: "^scaletest$"
image:
name: "^cirros$"
auto_assign_nic: true
runner:
type: "constant"
times: {{ 5 * computes_count }}
concurrency: 5
context:
users:
tenants: 10
users_per_tenant: 10
quotas:
nova:
instances: -1
cores: -1
ram: -1
floating_ips: -1
security_groups: -1
security_group_rules: -1
neutron:
network: -1
security_group: -1
security_group_rule: -1
port: -1
subnet: -1
router: -1
network:
start_cidr: "{{ network_cidr }}"
networks_per_tenant: 2
sla:
failure_rate:
max: 0

View File

@ -0,0 +1,38 @@
---
NovaServers.boot_and_delete_server:
-
args:
flavor:
name: "^scaletest$"
image:
name: "^cirros$"
auto_assign_nic: true
runner:
type: "constant"
times: {{ 40 * computes_count }}
concurrency: 10
context:
users:
tenants: 10
users_per_tenant: 10
quotas:
nova:
instances: -1
cores: -1
ram: -1
floating_ips: -1
security_groups: -1
security_group_rules: -1
neutron:
network: -1
security_group: -1
security_group_rule: -1
port: -1
subnet: -1
router: -1
network:
start_cidr: "{{ network_cidr }}"
networks_per_tenant: 2
sla:
failure_rate:
max: 0

View File

@ -0,0 +1,40 @@
---
NovaSecGroup.boot_and_delete_server_with_secgroups:
-
args:
flavor:
name: "^scaletest$"
image:
name: "^cirros$"
security_group_count: 2
rules_per_security_group: 10
runner:
type: "constant"
times: {{ 1 * computes_count }}
concurrency: 5
context:
users:
# it's important to have only 1 tenant to have single network to load
tenants: 1
users_per_tenant: 10
network:
start_cidr: "{{ network_cidr }}"
networks_per_tenant: 1
quotas:
nova:
instances: -1
cores: -1
ram: -1
floating_ips: -1
security_groups: -1
security_group_rules: -1
neutron:
network: -1
security_group: -1
security_group_rule: -1
port: -1
subnet: -1
router: -1
sla:
failure_rate:
max: 0

View File

@ -0,0 +1,40 @@
---
NovaSecGroup.boot_and_delete_server_with_secgroups:
-
args:
flavor:
name: "^scaletest$"
image:
name: "^cirros$"
security_group_count: 2
rules_per_security_group: 10
runner:
type: "constant"
times: {{ 5 * computes_count }}
concurrency: 5
context:
users:
# it's important to have only 1 tenant to have single network to load
tenants: 1
users_per_tenant: 10
network:
start_cidr: "{{ network_cidr }}"
networks_per_tenant: 1
quotas:
nova:
instances: -1
cores: -1
ram: -1
floating_ips: -1
security_groups: -1
security_group_rules: -1
neutron:
network: -1
security_group: -1
security_group_rule: -1
port: -1
subnet: -1
router: -1
sla:
failure_rate:
max: 0

View File

@ -0,0 +1,39 @@
---
NovaSecGroup.boot_and_delete_server_with_secgroups:
-
args:
flavor:
name: "^scaletest$"
image:
name: "^cirros$"
security_group_count: 2
rules_per_security_group: 10
runner:
type: "constant"
times: {{ 40 * computes_count }}
concurrency: 10
context:
users:
# it's important to have only 1 tenant to have single network to load
tenants: 1
users_per_tenant: 10
network:
start_cidr: "{{ network_cidr }}"
quotas:
nova:
instances: -1
cores: -1
ram: -1
floating_ips: -1
security_groups: -1
security_group_rules: -1
neutron:
network: -1
security_group: -1
security_group_rule: -1
port: -1
subnet: -1
router: -1
sla:
failure_rate:
max: 0

View File

@ -0,0 +1,35 @@
---
NovaServers.boot_and_list_server:
-
args:
flavor:
name: "^scaletest$"
image:
name: "^cirros$"
detailed: True
runner:
type: "constant"
times: {{ 1 * computes_count }}
concurrency: 5
context:
users:
tenants: 10
users_per_tenant: 10
quotas:
nova:
instances: -1
cores: -1
ram: -1
floating_ips: -1
security_groups: -1
security_group_rules: -1
neutron:
network: -1
security_group: -1
security_group_rule: -1
port: -1
subnet: -1
router: -1
sla:
failure_rate:
max: 0

View File

@ -0,0 +1,35 @@
---
NovaServers.boot_and_list_server:
-
args:
flavor:
name: "^scaletest$"
image:
name: "^cirros$"
detailed: True
runner:
type: "constant"
times: {{ 5 * computes_count }}
concurrency: 5
context:
users:
tenants: 10
users_per_tenant: 10
quotas:
nova:
instances: -1
cores: -1
ram: -1
floating_ips: -1
security_groups: -1
security_group_rules: -1
neutron:
network: -1
security_group: -1
security_group_rule: -1
port: -1
subnet: -1
router: -1
sla:
failure_rate:
max: 0

View File

@ -0,0 +1,35 @@
---
NovaServers.boot_and_list_server:
-
args:
flavor:
name: "^scaletest$"
image:
name: "^cirros$"
detailed: True
runner:
type: "constant"
times: {{ 40 * computes_count }}
concurrency: 10
context:
users:
tenants: 10
users_per_tenant: 10
quotas:
nova:
instances: -1
cores: -1
ram: -1
floating_ips: -1
security_groups: -1
security_group_rules: -1
neutron:
network: -1
security_group: -1
security_group_rule: -1
port: -1
subnet: -1
router: -1
sla:
failure_rate:
max: 0

View File

@ -0,0 +1,35 @@
---
NovaServers.boot_and_list_server:
-
args:
flavor:
name: "^scaletest$"
image:
name: "^cirros$"
detailed: True
runner:
type: "constant"
times: {{ 40 * computes_count }}
concurrency: 40
context:
users:
tenants: 10
users_per_tenant: 10
quotas:
nova:
instances: -1
cores: -1
ram: -1
floating_ips: -1
security_groups: -1
security_group_rules: -1
neutron:
network: -1
security_group: -1
security_group_rule: -1
port: -1
subnet: -1
router: -1
sla:
failure_rate:
max: 0

View File

@ -0,0 +1,35 @@
---
NovaServers.boot_and_list_server:
-
args:
flavor:
name: "^scaletest$"
image:
name: "^cirros$"
detailed: True
runner:
type: "constant"
times: {{ 80 * computes_count }}
concurrency: 80
context:
users:
tenants: 10
users_per_tenant: 10
quotas:
nova:
instances: -1
cores: -1
ram: -1
floating_ips: -1
security_groups: -1
security_group_rules: -1
neutron:
network: -1
security_group: -1
security_group_rule: -1
port: -1
subnet: -1
router: -1
sla:
failure_rate:
max: 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,373 @@
.. _`fuel_ccp_test_report`:
===================================================
Fuel Containerized Control Plane performance report
===================================================
:Abstract:
This document includes Fuel CCP control plane performance test results for
various environments (from 50 to 350 nodes). All tests have been performed
regarding :ref:`fuel_ccp_test_plan`
Environment description
=======================
For Kubernetes pre-deployment `Kargo tool`_ was used. More information about
*fuel-ccp* and how it can be installed can be found in
`official documentation`_.
.. _Kargo tool: https://github.com/kubespray/kargo
.. _official documentation: http://fuel-ccp.readthedocs.io/en/latest/
Hardware configuration of each server
-------------------------------------
All servers have 3 types of configuration describing in table below
.. table:: Description of servers hardware type 1
+-------+----------------+---------------------------------+
|server |vendor,model |Dell PowerEdge R630 |
+-------+----------------+---------------------------------+
|CPU |vendor,model |Intel,E5-2680 v3 |
| +----------------+---------------------------------+
| |processor_count |2 |
| +----------------+---------------------------------+
| |core_count |12 |
| +----------------+---------------------------------+
| |frequency_MHz |2500 |
+-------+----------------+---------------------------------+
|RAM |vendor,model |Samsung, M393A2G40DB0-CPB |
| +----------------+---------------------------------+
| |amount_MB |262144 |
+-------+----------------+---------------------------------+
|NETWORK|interface_name s|eno1, eno2 |
| +----------------+---------------------------------+
| |vendor,model |Intel,X710 Dual Port |
| +----------------+---------------------------------+
| |bandwidth |10G |
| +----------------+---------------------------------+
| |interface_names |enp3s0f0, enp3s0f1 |
| +----------------+---------------------------------+
| |vendor,model |Intel,X710 Dual Port |
| +----------------+---------------------------------+
| |bandwidth |10G |
+-------+----------------+---------------------------------+
|STORAGE|dev_name |/dev/sda |
| +----------------+---------------------------------+
| |vendor,model | | raid1 - Dell, PERC H730P Mini |
| | | | 2 disks Intel S3610 |
| +----------------+---------------------------------+
| |SSD/HDD |SSD |
| +----------------+---------------------------------+
| |size | 3,6TB |
+-------+----------------+---------------------------------+
.. table:: Description of servers hardware type 2
+-------+----------------+-------------------------------+
|server |vendor,model |Lenovo ThinkServer RD550 |
+-------+----------------+-------------------------------+
|CPU |vendor,model |Intel,E5-2680 v3 |
| +----------------+-------------------------------+
| |processor_count |2 |
| +----------------+-------------------------------+
| |core_count |12 |
| +----------------+-------------------------------+
| |frequency_MHz |2500 |
+-------+----------------+-------------------------------+
|RAM |vendor,model |Samsung, M393A2G40DB0-CPB |
| +----------------+-------------------------------+
| |amount_MB |262144 |
+-------+----------------+-------------------------------+
|NETWORK|interface_name s|enp3s0f0, enp3s0f1 |
| +----------------+-------------------------------+
| |vendor,model |Intel,X710 Dual Port |
| +----------------+-------------------------------+
| |bandwidth |10G |
| +----------------+-------------------------------+
| |interface_names |ens2f0, ens2f1 |
| +----------------+-------------------------------+
| |vendor,model |Intel,X710 Dual Port |
| +----------------+-------------------------------+
| |bandwidth |10G |
+-------+----------------+-------------------------------+
|STORAGE|dev_name |/dev/sda |
| +----------------+-------------------------------+
| |vendor,model | | raid1 - Lenovo 720ix |
| | | | 2 disks Intel S3610 |
| +----------------+-------------------------------+
| |SSD/HDD |SSD |
| +----------------+-------------------------------+
| |size |799GB |
+-------+----------------+-------------------------------+
.. table:: Description of servers hardware type 3
+-------+----------------+-------------------------------+
|server |vendor,model |Lenovo ThinkServer RD650 |
+-------+----------------+-------------------------------+
|CPU |vendor,model |Intel,E5-2670 v3 |
| +----------------+-------------------------------+
| |processor_count |2 |
| +----------------+-------------------------------+
| |core_count |12 |
| +----------------+-------------------------------+
| |frequency_MHz |2500 |
+-------+----------------+-------------------------------+
|RAM |vendor,model |Samsung, M393A2G40DB0-CPB |
| +----------------+-------------------------------+
| |amount_MB |131916 |
+-------+----------------+-------------------------------+
|NETWORK|interface_name s|enp3s0f0, enp3s0f1 |
| +----------------+-------------------------------+
| |vendor,model |Intel,X710 Dual Port |
| +----------------+-------------------------------+
| |bandwidth |10G |
| +----------------+-------------------------------+
| |interface_names |ens2f0, ens2f1 |
| +----------------+-------------------------------+
| |vendor,model |Intel,X710 Dual Port |
| +----------------+-------------------------------+
| |bandwidth |10G |
+-------+----------------+-------------------------------+
|STORAGE|dev_name |/dev/sda |
| +----------------+-------------------------------+
| |vendor,model | | raid1 - Lenovo 720ix |
| | | | 2 disks Intel S3610 |
| +----------------+-------------------------------+
| |SSD/HDD |SSD |
| +----------------+-------------------------------+
| |size |799GB |
| +----------------+-------------------------------+
| |dev_name |/dev/sdb |
| +----------------+-------------------------------+
| |vendor,model | | raid10 - Lenovo 720ix |
| | | | 10 disks 2T |
| +----------------+-------------------------------+
| |SSD/HDD |HDD |
| +----------------+-------------------------------+
| |size |9999GB |
+-------+----------------+-------------------------------+
Network configuration of each server
------------------------------------
All servers have same network configuration:
.. image:: configs/Network_Scheme.png
:alt: Network Scheme of the environment
:width: 650px
Test results
============
Test Case 1: Boot and delete server
-----------------------------------
The following set of results is dedicated to investigate how Nova installed
against Kubernetes cluster via fuel-ccp tool is behaving on various scale.
200 nodes OpenStack cluster, concurrency 5, 910 iterations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NovaServers.boot_and_delete_server scenario in
:download:`nova_200_nodes.html <reports/nova_200_nodes.html>`
.. image:: reports/200_nodes_boot_and_delete.png
:alt: Boot and delete servers Rally scenario (200 nodes)
:width: 650px
+----------------------+-----------+-----------+-----------+-----------+-----------+
| Operation | Median| 90%ile | 95%ile | Max | Min |
| | (sec) | (sec) | (sec) | (sec) | (sec) |
+======================+===========+===========+===========+===========+===========+
| boot_server | 4.001 | 5.001 | 5.135 | 7.686 | 3.785 |
+----------------------+-----------+-----------+-----------+-----------+-----------+
| delete_server | 2.346 | 2.487 | 2.517 | 3.769 | 2.297 |
+----------------------+-----------+-----------+-----------+-----------+-----------+
350 nodes OpenStack cluster, concurrency 5, 1750 iterations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NovaServers.boot_and_delete_server scenario in
:download:`nova_350_nodes.html <reports/nova_350_nodes.html>`
.. image:: reports/350_nodes_boot_and_delete.png
:alt: Boot and delete servers Rally scenario (350 nodes)
:width: 650px
+----------------------+-----------+-----------+-----------+-----------+-----------+
| Operation | Median| 90%ile | 95%ile | Max | Min |
| | (sec) | (sec) | (sec) | (sec) | (sec) |
+======================+===========+===========+===========+===========+===========+
| boot_server | 12.679 | 16.853 | 18.539 | 71.071 | 3.899 |
+----------------------+-----------+-----------+-----------+-----------+-----------+
| delete_server | 6.261 | 8.365 | 8.613 | 14.747 | 0.842 |
+----------------------+-----------+-----------+-----------+-----------+-----------+
Test Case 2: Boot and list servers
----------------------------------
The following set of results is dedicated to investigate how Nova installed
against Kubernetes cluster via fuel-ccp tool is behaving on various scale.
150 nodes OpenStack cluster, concurrency 20, 5520 iterations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tested density: 40 VMs per compute node
NovaServers.boot_and_list_server scenario in
:download:`nova_150_nodes_20.html <reports/nova_150_nodes_20.html>`
.. image:: reports/150_nodes_boot_and_list_20.png
:alt: Boot and list servers Rally scenario (150 nodes)
:width: 650px
+----------------------+-----------+-----------+-----------+-----------+-----------+
| Operation | Median| 90%ile | 95%ile | Max | Min |
| | (sec) | (sec) | (sec) | (sec) | (sec) |
+======================+===========+===========+===========+===========+===========+
| list_servers | 4.381 | 7.135 | 7.69 | 172.788 | 0.105 |
+----------------------+-----------+-----------+-----------+-----------+-----------+
| boot_server | 16.931 | 21.05 | 22.203 | 102.507 | 4.717 |
+----------------------+-----------+-----------+-----------+-----------+-----------+
150 nodes OpenStack cluster, concurrency 40, 5520 iterations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tested density: 40 VMs per compute node
NovaServers.boot_and_list_server scenario in
:download:`nova_150_nodes_40.html <reports/nova_150_nodes_40.html>`
.. image:: reports/150_nodes_boot_and_list_40.png
:alt: Boot and list servers Rally scenario (150 nodes)
:width: 650px
+----------------------+-----------+-----------+-----------+-----------+-----------+
| Operation | Median| 90%ile | 95%ile | Max | Min |
| | (sec) | (sec) | (sec) | (sec) | (sec) |
+======================+===========+===========+===========+===========+===========+
| list_servers | 4.656 | 7.607 | 7.963 | 166.783 | 0.188 |
+----------------------+-----------+-----------+-----------+-----------+-----------+
| boot_server | 19.773 | 25.958 | 29.396 | 197.92 | 9.574 |
+----------------------+-----------+-----------+-----------+-----------+-----------+
200 nodes OpenStack cluster, concurrency 5, 910 iterations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tested density: 5 VMs per compute node
NovaServers.boot_and_list_server scenario in
:download:`nova_200_nodes.html <reports/nova_200_nodes.html>`
.. image:: reports/200_nodes_boot_and_list_5.png
:alt: Boot and list servers Rally scenario (200 nodes)
:width: 650px
+----------------------+-----------+-----------+-----------+-----------+-----------+
| Operation | Median| 90%ile | 95%ile | Max | Min |
| | (sec) | (sec) | (sec) | (sec) | (sec) |
+======================+===========+===========+===========+===========+===========+
| list_servers | 0.272 | 0.424 | 0.476 | 0.644 | 0.106 |
+----------------------+-----------+-----------+-----------+-----------+-----------+
| boot_server | 4.017 | 5.037 | 5.13 | 5.437 | 3.794 |
+----------------------+-----------+-----------+-----------+-----------+-----------+
200 nodes OpenStack cluster, concurrency 40, 7280 iterations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tested density: 40 VMs per compute node
NovaServers.boot_and_list_server [2] scenario in
:download:`nova_200_nodes.html <reports/nova_200_nodes.html>`
.. image:: reports/200_nodes_boot_and_list_40.png
:alt: Boot and list servers Rally scenario (200 nodes)
:width: 650px
+----------------------+-----------+-----------+-----------+-----------+-----------+
| Operation | Median| 90%ile | 95%ile | Max | Min |
| | (sec) | (sec) | (sec) | (sec) | (sec) |
+======================+===========+===========+===========+===========+===========+
| list_servers | 4.237 | 5.944 | 7.994 | 130.39 | 0.111 |
+----------------------+-----------+-----------+-----------+-----------+-----------+
| boot_server | 11.978 | 15.767 | 17.764 | 55.431 | 3.911 |
+----------------------+-----------+-----------+-----------+-----------+-----------+
Test case 3: Keystone authentication
------------------------------------
The following set of results is dedicated to investigate how Keystone installed
against Kubernetes cluster via fuel-ccp tool is behaving under various requests
per second load. For more information the full Rally report can be used:
:download:`keystone.html <reports/keystone_tuning.html>`. Failed scenarios are
related either to the Keystone configuration tuning under Containerized Control
Plane repository or to the huge enough RPS being set for all in one Keystone.
50 nodes OpenStack cluster, 30 RPS, 12000 iterations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Authenticate.keystone [4] scenario in
:download:`keystone.html <reports/keystone_tuning.html>`
+--------------+-----------+----------+-----------+----------+-----------+
| Operation | Median| 90%ile | 95%ile | Max | Min |
| | (sec) | (sec) | (sec) | (sec) | (sec) |
+==============+===========+==========+===========+==========+===========+
| authenticate | 0.08 | 0.102 | 0.113 | 1.015 | 0.06 |
+--------------+-----------+----------+-----------+----------+-----------+
50 nodes OpenStack cluster, 60 RPS, 12000 iterations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Authenticate.keystone [6] scenario in
:download:`keystone.html <reports/keystone_tuning.html>`
+--------------+-----------+----------+-----------+----------+-----------+
| Operation | Median| 90%ile | 95%ile | Max | Min |
| | (sec) | (sec) | (sec) | (sec) | (sec) |
+==============+===========+==========+===========+==========+===========+
| authenticate | 0.097 | 0.132 | 0.147 | 1.113 | 0.073 |
+--------------+-----------+----------+-----------+----------+-----------+
50 nodes OpenStack cluster, 90 RPS, 12000 iterations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Authenticate.keystone [5] scenario in
:download:`keystone.html <reports/keystone_tuning.html>`
+--------------+-----------+----------+-----------+----------+-----------+
| Operation | Median| 90%ile | 95%ile | Max | Min |
| | (sec) | (sec) | (sec) | (sec) | (sec) |
+==============+===========+==========+===========+==========+===========+
| authenticate | 0.128 | 0.179 | 0.199 | 1.111 | 0.082 |
+--------------+-----------+----------+-----------+----------+-----------+
50 nodes OpenStack cluster, 120 RPS, 12000 iterations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Authenticate.keystone [7] scenario in
:download:`keystone.html <reports/keystone_tuning.html>`
+--------------+-----------+----------+-----------+----------+-----------+
| Operation | Median| 90%ile | 95%ile | Max | Min |
| | (sec) | (sec) | (sec) | (sec) | (sec) |
+==============+===========+==========+===========+==========+===========+
| authenticate | 0.195 | 0.269 | 0.298 | 1.455 | 0.096 |
+--------------+-----------+----------+-----------+----------+-----------+
50 nodes OpenStack cluster, 150 RPS, 12000 iterations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Authenticate.keystone scenario in
:download:`keystone.html <reports/keystone_tuning.html>`
+--------------+-----------+----------+-----------+----------+-----------+
| Operation | Median| 90%ile | 95%ile | Max | Min |
| | (sec) | (sec) | (sec) | (sec) | (sec) |
+==============+===========+==========+===========+==========+===========+
| authenticate | 0.478 | 0.738 | 0.817 | 2.024 | 0.109 |
+--------------+-----------+----------+-----------+----------+-----------+

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long