diff --git a/doc/source/test_results/controlplane_density/configs/Network_Scheme.png b/doc/source/test_results/controlplane_density/configs/Network_Scheme.png new file mode 100644 index 0000000..b3bdca4 Binary files /dev/null and b/doc/source/test_results/controlplane_density/configs/Network_Scheme.png differ diff --git a/doc/source/test_results/controlplane_density/configs/boot_attach_and_list_with_secgroups.json b/doc/source/test_results/controlplane_density/configs/boot_attach_and_list_with_secgroups.json new file mode 100644 index 0000000..984b198 --- /dev/null +++ b/doc/source/test_results/controlplane_density/configs/boot_attach_and_list_with_secgroups.json @@ -0,0 +1,62 @@ +{% set flavor_name = flavor_name or "m1.tiny" %} +{% set image_name = image_name or "^(cirros.*uec|TestVM)$" %} +{ + "NovaDensityPlugin.boot_attach_and_list_with_secgroups": [ + { + "args": { + "flavor": { + "name": "{{flavor_name}}" + }, + "image": { + "name": "{{image_name}}" + }, + "security_group_count": 10, + "rules_per_security_group": 10, + "boot_server_kwargs": { "auto_assign_nic" : true }, + "create_volume_kwargs": {}, + "volume_size": 1 + }, + "runner": { + "type": "constant", + "times": {{ 10 * compute }}, + "concurrency": {{concurrency}} + }, + "context": { + "users": { + "tenants": 10, + "users_per_tenant": 10 + }, + "quotas": { + "neutron": { + "network": -1, + "security_group": -1, + "security_group_rule": -1, + "port": -1, + "subnet": -1, + "router": -1 + }, + "nova": { + "instances": -1, + "cores": -1, + "ram": -1, + "floating_ips": -1, + "security_groups": -1, + "security_group_rules": -1 + }, + "cinder": { + "volumes": -1, + "gigabytes": -1, + "snapshots": -1 + } + }, + "network": { + "start_cidr": "{{ "100.1.0.0/25" if gre_enabled else "1.0.0.0/25" }}", + "networks_per_tenant": 10 + } + }, + "sla": { + "failure_rate": { "max": 0 } + } + } + ] +} diff --git a/doc/source/test_results/controlplane_density/configs/compute-1.tar.gz b/doc/source/test_results/controlplane_density/configs/compute-1.tar.gz new file mode 100644 index 0000000..1fe8957 Binary files /dev/null and b/doc/source/test_results/controlplane_density/configs/compute-1.tar.gz differ diff --git a/doc/source/test_results/controlplane_density/configs/compute-osd-1.tar.gz b/doc/source/test_results/controlplane_density/configs/compute-osd-1.tar.gz new file mode 100644 index 0000000..0004875 Binary files /dev/null and b/doc/source/test_results/controlplane_density/configs/compute-osd-1.tar.gz differ diff --git a/doc/source/test_results/controlplane_density/configs/controller-1.tar.gz b/doc/source/test_results/controlplane_density/configs/controller-1.tar.gz new file mode 100644 index 0000000..94c0c40 Binary files /dev/null and b/doc/source/test_results/controlplane_density/configs/controller-1.tar.gz differ diff --git a/doc/source/test_results/controlplane_density/configs/controller-2.tar.gz b/doc/source/test_results/controlplane_density/configs/controller-2.tar.gz new file mode 100644 index 0000000..83b3515 Binary files /dev/null and b/doc/source/test_results/controlplane_density/configs/controller-2.tar.gz differ diff --git a/doc/source/test_results/controlplane_density/configs/controller-3.tar.gz b/doc/source/test_results/controlplane_density/configs/controller-3.tar.gz new file mode 100644 index 0000000..61dfb19 Binary files /dev/null and b/doc/source/test_results/controlplane_density/configs/controller-3.tar.gz differ diff --git a/doc/source/test_results/controlplane_density/configs/nova_density.py b/doc/source/test_results/controlplane_density/configs/nova_density.py new file mode 100644 index 0000000..03bd7b3 --- /dev/null +++ b/doc/source/test_results/controlplane_density/configs/nova_density.py @@ -0,0 +1,173 @@ +# Copyright 2016: Mirantis Inc. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from rally import consts +from rally.plugins.openstack import scenario +from rally.plugins.openstack.scenarios.cinder import utils as cinder_utils +from rally.plugins.openstack.scenarios.nova import utils +from rally.task import types +from rally.task import validation + + +class NovaDensityPlugin(utils.NovaScenario, cinder_utils.CinderScenario): + """boot_attach_and_list_with_secgroups""" + @types.convert(image={"type": "glance_image"}, + flavor={"type": "nova_flavor"}) + @validation.image_valid_on_flavor("flavor", "image") + @validation.required_parameters("security_group_count", + "rules_per_security_group") + @validation.required_contexts("network") + @validation.required_services(consts.Service.NOVA) + @validation.required_openstack(users=True) + @scenario.configure(context={"cleanup": ["cinder", "nova"]}) + def boot_attach_and_list_with_secgroups( + self, image, flavor, + volume_size, + security_group_count, + rules_per_security_group, + do_delete=False, + detailed=True, + boot_server_kwargs=None, + create_volume_kwargs=None + ): + + if boot_server_kwargs is None: + boot_server_kwargs = {} + if create_volume_kwargs is None: + create_volume_kwargs = {} + + security_groups = self._create_security_groups( + security_group_count) + self._create_rules_for_security_group(security_groups, + rules_per_security_group) + + secgroups_names = [sg.name for sg in security_groups] + """boot server""" + server = self._boot_server(image, flavor, + security_groups=secgroups_names, + **boot_server_kwargs) + + volume = self._create_volume(volume_size, **create_volume_kwargs) + self._attach_volume(server, volume) + + self._list_security_groups() + self._list_servers(detailed) + + if do_delete: + self._detach_volume(server, volume) + self._delete_server(server) + self._delete_volume(volume) + self._delete_security_groups(security_groups) + + """boot_and_list_with_secgroups""" + @types.convert(image={"type": "glance_image"}, + flavor={"type": "nova_flavor"}) + @validation.image_valid_on_flavor("flavor", "image") + @validation.required_parameters("security_group_count", + "rules_per_security_group") + @validation.required_contexts("network") + @validation.required_services(consts.Service.NOVA) + @validation.required_openstack(users=True) + @scenario.configure(context={"cleanup": ["nova"]}) + def boot_and_list_with_secgroups( + self, image, flavor, + security_group_count, + rules_per_security_group, + do_delete=False, + detailed=True, + boot_server_kwargs=None + ): + + if boot_server_kwargs is None: + boot_server_kwargs = {} + + security_groups = self._create_security_groups( + security_group_count) + self._create_rules_for_security_group(security_groups, + rules_per_security_group) + + secgroups_names = [sg.name for sg in security_groups] + """boot server""" + server = self._boot_server(image, flavor, + security_groups=secgroups_names, + **boot_server_kwargs) + + self._list_security_groups() + self._list_servers(detailed) + + if do_delete: + self._delete_server(server) + self._delete_security_groups(security_groups) + + """boot_attach_and_list""" + @types.convert(image={"type": "glance_image"}, + flavor={"type": "nova_flavor"}) + @validation.image_valid_on_flavor("flavor", "image") + @validation.required_services(consts.Service.NOVA) + @validation.required_openstack(users=True) + @scenario.configure(context={"cleanup": ["cinder", "nova"]}) + def boot_attach_and_list( + self, image, flavor, + volume_size, + do_delete=False, + detailed=True, + boot_server_kwargs=None, + create_volume_kwargs=None + ): + + if boot_server_kwargs is None: + boot_server_kwargs = {} + if create_volume_kwargs is None: + create_volume_kwargs = {} + + """boot server""" + server = self._boot_server(image, flavor, + **boot_server_kwargs) + + volume = self._create_volume(volume_size, **create_volume_kwargs) + self._attach_volume(server, volume) + + self._list_servers(detailed) + + if do_delete: + self._detach_volume(server, volume) + self._delete_server(server) + self._delete_volume(volume) + + """boot_and_list""" + @types.convert(image={"type": "glance_image"}, + flavor={"type": "nova_flavor"}) + @validation.image_valid_on_flavor("flavor", "image") + @validation.required_services(consts.Service.NOVA) + @validation.required_openstack(users=True) + @scenario.configure(context={"cleanup": ["nova"]}) + def boot_and_list( + self, image, flavor, + do_delete=False, + detailed=True, + boot_server_kwargs=None + ): + + if boot_server_kwargs is None: + boot_server_kwargs = {} + + """boot server""" + server = self._boot_server(image, flavor, + **boot_server_kwargs) + + self._list_servers(detailed) + + if do_delete: + self._delete_server(server) diff --git a/doc/source/test_results/controlplane_density/index.rst b/doc/source/test_results/controlplane_density/index.rst new file mode 100644 index 0000000..ef6d1e8 --- /dev/null +++ b/doc/source/test_results/controlplane_density/index.rst @@ -0,0 +1,217 @@ + +.. _Results_of_OpenStack_services_density_testing: + +********************************************* +Results of OpenStack Services density testing +********************************************* + +:Abstract: + + This document includes density test results of OpenStack + services. All tests have been performed + regarding :ref:`controlplane_density_` + +Environment description +======================= + +Environment contains 5 types of servers: + +- rally node +- controller node +- compute-osd node +- compute node + +.. table:: Amount of servers each role + + +------------+--------------+ + |Role |Servers count | + +============+==============+ + |rally |1 | + +------------+--------------+ + |controller |3 | + +------------+--------------+ + |compute |176 | + +------------+--------------+ + |compute-osd |20 | + +------------+--------------+ + +Hardware configuration of each server +------------------------------------- +All servers have same configuration describing in table below + +.. table:: Description of servers hardware + + +-------+----------------+-------------------------------+ + |server |vendor,model |HP,DL380 Gen9 | + +-------+----------------+-------------------------------+ + |CPU |vendor,model |Intel,E5-2680 v3 | + | +----------------+-------------------------------+ + | |processor_count |2 | + | +----------------+-------------------------------+ + | |core_count |12 | + | +----------------+-------------------------------+ + | |frequency_MHz |2500 | + +-------+----------------+-------------------------------+ + |RAM |vendor,model |HP,752369-081 | + | +----------------+-------------------------------+ + | |amount_MB |262144 | + +-------+----------------+-------------------------------+ + |NETWORK|interface_name |p1p1 | + | +----------------+-------------------------------+ + | |vendor,model |Intel,X710 Dual Port | + | +----------------+-------------------------------+ + | |bandwidth |10G | + +-------+----------------+-------------------------------+ + |STORAGE|dev_name |/dev/sda | + | +----------------+-------------------------------+ + | |vendor,model | | raid10 - HP P840 | + | | | | 12 disks EH0600JEDHE | + | +----------------+-------------------------------+ + | |SSD/HDD |HDD | + | +----------------+-------------------------------+ + | |size | 3,6TB | + +-------+----------------+-------------------------------+ + +Network configuration of each server +------------------------------------ +All servers have the similar network configuration: + +.. image:: configs/Network_Scheme.png + :alt: Network Scheme of the environment + +Here is a part of switch configuration for each switch port which is +connected to ens1f0 interface of a server: + +.. code:: bash + + switchport mode trunk + switchport trunk native vlan 600 + switchport trunk allowed vlan 600-602,630-649 + spanning-tree port type edge trunk + spanning-tree bpduguard enable + no snmp trap link-status + +Software configuration on servers with controller and compute roles +------------------------------------------------------------------- + +.. table:: Services on servers by role + + +------------+---------------------------+ + |Role |Service name | + +============+===========================+ + |controller || horizon | + | || keystone | + | || nova-api | + | || nava-scheduler | + | || nova-cert | + | || nova-conductor | + | || nova-consoleauth | + | || nova-consoleproxy | + | || cinder-api | + | || cinder-backup | + | || cinder-scheduler | + | || cinder-volume | + | || glance-api | + | || glance-glare | + | || glance-registry | + | || neutron-dhcp-agent | + | || neutron-l3-agent | + | || neutron-metadata-agent | + | || neutron-openvswitch-agent| + | || neutron-server | + | || heat-api | + | || heat-api-cfn | + | || heat-api-cloudwatch | + | || ceph-mon | + | || rados-gw | + | || heat-engine | + +------------+---------------------------+ + |compute || nova-compute | + | || neutron-l3-agent | + | || neutron-metadata-agent | + | || neutron-openvswitch-agent| + +------------+---------------------------+ + +.. table:: Software version on servers with controller and compute roles + + +------------+-------------------+ + |Software |Version | + +============+===================+ + |OpenStack |Mitaka | + +------------+-------------------+ + |Ceph |Hammer | + +------------+-------------------+ + |Ubuntu |Ubuntu 14.04.3 LTS | + +------------+-------------------+ + +You can find outputs of some commands and /etc folder in the following +archives: + +:download:`controller-1.tar.gz ` +:download:`controller-2.tar.gz ` +:download:`controller-3.tar.gz ` +:download:`compute-1.tar.gz ` +:download:`compute-osd-1.tar.gz ` + +Software configuration on servers with Rally role +------------------------------------------------- + +Rally should be installed manually on this server. The extended instructions +can be found in `Rally installation documentation`_ + +.. table:: Software version on server with Rally role + + +------------+-------------------+ + |Software |Version | + +============+===================+ + |Rally |0.4.0 | + +------------+-------------------+ + |Ubuntu |Ubuntu 14.04.3 LTS | + +------------+-------------------+ + + +Test results +============ + +As a result of this part we got the following HTML file: + +:download:`rally_report.html ` + +All results added below are part of this report, all values are presented in +seconds. + +Cinder +------ ++---------------+---------+----------+----------+---------+---------+ +| Operation | Mean | 90%ile | 50%ile | Max | Min | ++===============+=========+==========+==========+=========+=========+ +| create_volume | 2.58966 | 2.7106 | 2.55807 | 3.81035 | 2.40941 | ++---------------+---------+----------+----------+---------+---------+ + +Neutron +------- ++---------------------------+----------+-----------+----------+-----------+----------+ +| Operation | Mean | 90%ile | 50%ile | Max | Min | ++===========================+==========+===========+==========+===========+==========+ +| create_100_rules | 90.6873 | 160.768 | 90.1278 | 176.444 | 21.1011 | ++---------------------------+----------+-----------+----------+-----------+----------+ +| create_10_security_groups | 9.26443 | 16.6121 | 9.28746 | 21.1762 | 1.23875 | ++---------------------------+----------+-----------+----------+-----------+----------+ +| list_security_groups | 3.34852 | 5.61315 | 3.45464 | 7.33637 | 0.13018 | ++---------------------------+----------+-----------+----------+-----------+----------+ + +Nova +---- ++---------------+----------+----------+----------+----------+-----------+ +| Operation | Mean | 90%ile | 50%ile | Max | Min | ++===============+==========+==========+==========+==========+===========+ +| attach_volume | 2.85446 | 3.03082 | 2.74456 | 6.36683 | 2.49666 | ++---------------+----------+----------+----------+----------+-----------+ +| boot_server | 19.064 | 24.7443 | 18.9116 | 28.9823 | 11.2053 | ++---------------+----------+----------+----------+----------+-----------+ +| list_servers | 4.12437 | 7.17804 | 4.11694 | 9.48992 | 0.174039 | ++---------------+----------+----------+----------+----------+-----------+ + +.. references: + +.. _Rally installation documentation: https://rally.readthedocs.io/en/latest/install.html diff --git a/doc/source/test_results/controlplane_density/results/rally_report.html b/doc/source/test_results/controlplane_density/results/rally_report.html new file mode 100644 index 0000000..d454e38 --- /dev/null +++ b/doc/source/test_results/controlplane_density/results/rally_report.html @@ -0,0 +1,856 @@ + + + + + + Rally | Rally Task Report + + + + + + + + + + + + + +
+
+ Rally  + task results +
+
+ +
+ + + + +
+
+ + +
+
+ + +
+
+ +
+ +
+

Task overview

+ + + + + + + + + +
+ Scenario + + + + + + Load duration (s) + + + + + + Full duration (s) + + + + + + Iterations + + + + + + Runner + + + + + + Errors + + + + + + Success (SLA) + + + + +
{{sc.ref}} + {{sc.load_duration | number:3}} + {{sc.full_duration | number:3}} + {{sc.iterations_count}} + {{sc.runner}} + {{sc.errors.length}} + + + +
+
+ +
+

Input file

+
{{source}}
+
+ +
+

{{scenario.cls}}.{{scenario.name}} ({{scenario.full_duration | number:3}}s)

+
    +
  • +
    {{t.name}}
    +
  • +
    +
+
+ + + + + + + + + + +
+ +
+
+ + +
+ + + + \ No newline at end of file diff --git a/doc/source/test_results/index.rst b/doc/source/test_results/index.rst index eb96534..151952d 100644 --- a/doc/source/test_results/index.rst +++ b/doc/source/test_results/index.rst @@ -23,4 +23,4 @@ Test Results 1000_nodes/index reliability/index control_plane/main - + controlplane_density/index