diff --git a/doc/source/test_results/control_plane/configs/Network_Scheme.png b/doc/source/test_results/control_plane/configs/Network_Scheme.png new file mode 100644 index 0000000..b3bdca4 Binary files /dev/null and b/doc/source/test_results/control_plane/configs/Network_Scheme.png differ diff --git a/doc/source/test_results/control_plane/configs/compute-1.tar.gz b/doc/source/test_results/control_plane/configs/compute-1.tar.gz new file mode 100644 index 0000000..1fe8957 Binary files /dev/null and b/doc/source/test_results/control_plane/configs/compute-1.tar.gz differ diff --git a/doc/source/test_results/control_plane/configs/compute-osd-1.tar.gz b/doc/source/test_results/control_plane/configs/compute-osd-1.tar.gz new file mode 100644 index 0000000..0004875 Binary files /dev/null and b/doc/source/test_results/control_plane/configs/compute-osd-1.tar.gz differ diff --git a/doc/source/test_results/control_plane/configs/controller-1.tar.gz b/doc/source/test_results/control_plane/configs/controller-1.tar.gz new file mode 100644 index 0000000..94c0c40 Binary files /dev/null and b/doc/source/test_results/control_plane/configs/controller-1.tar.gz differ diff --git a/doc/source/test_results/control_plane/configs/controller-2.tar.gz b/doc/source/test_results/control_plane/configs/controller-2.tar.gz new file mode 100644 index 0000000..83b3515 Binary files /dev/null and b/doc/source/test_results/control_plane/configs/controller-2.tar.gz differ diff --git a/doc/source/test_results/control_plane/configs/controller-3.tar.gz b/doc/source/test_results/control_plane/configs/controller-3.tar.gz new file mode 100644 index 0000000..61dfb19 Binary files /dev/null and b/doc/source/test_results/control_plane/configs/controller-3.tar.gz differ diff --git a/doc/source/test_results/control_plane/configs/deployment.json b/doc/source/test_results/control_plane/configs/deployment.json new file mode 100644 index 0000000..4a78143 --- /dev/null +++ b/doc/source/test_results/control_plane/configs/deployment.json @@ -0,0 +1,13 @@ +{ + "admin": { + "password": "password", + "tenant_name": "tenant", + "username": "user" + }, + "auth_url": "http://1.2.3.4:5000/v2.0", + "region_name": "RegionOne", + "type": "ExistingCloud", + "endpoint_type": "internal", + "admin_port": 35357, + "https_insecure": true +} \ No newline at end of file diff --git a/doc/source/test_results/control_plane/configs/job-params.yaml b/doc/source/test_results/control_plane/configs/job-params.yaml new file mode 100644 index 0000000..91ad721 --- /dev/null +++ b/doc/source/test_results/control_plane/configs/job-params.yaml @@ -0,0 +1,5 @@ +--- + concurrency: 5 + compute: 196 + gre_enabled: false + http_server_with_glance_images: "1.2.3.4" \ No newline at end of file diff --git a/doc/source/test_results/control_plane/configs/rally_report.html b/doc/source/test_results/control_plane/configs/rally_report.html new file mode 100644 index 0000000..59c0eaf --- /dev/null +++ b/doc/source/test_results/control_plane/configs/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/control_plane/configs/run_test_script.sh b/doc/source/test_results/control_plane/configs/run_test_script.sh new file mode 100644 index 0000000..df1ebb0 --- /dev/null +++ b/doc/source/test_results/control_plane/configs/run_test_script.sh @@ -0,0 +1,12 @@ +${WORK_DIR:?} +DEPLOYMENT_NAME="$(uuidgen)" +DEPLOYMENT_CONFIG="${WORK_DIR}/deployment.json" +PLUGIN_PATH="${WORK_DIR}/plugins/nova_scale.py" +JOB_PARAMS_CONFIG="${WORK_DIR}/job-params.yaml" +rally deployment create --filename $(DEPLOYMENT_CONFIG) --name $(DEPLOYMENT_NAME) +SCENARIOS="boot_attach_live_migrate_and_delete_server_with_secgroups create-and-delete-image keystone.json" +for scenario in SCENARIOS; do +rally --plugin-paths ${PLUGINS_PATH} task start --tag ${scenario} --task-args-file ${JOB_PARAMS_CONFIG} ${WORK_DR}/scenarios/${scenario} +done +task_list="$(rally task list --uuids-only)" +rally task report --tasks ${task_list} --out=${WORK_DIR}/rally_report.html \ No newline at end of file diff --git a/doc/source/test_results/control_plane/main.rst b/doc/source/test_results/control_plane/main.rst new file mode 100644 index 0000000..e7160d7 --- /dev/null +++ b/doc/source/test_results/control_plane/main.rst @@ -0,0 +1,305 @@ + +.. _openstack_control_plane_performance_report: + +****************************************** +OpenStack control plane performance report +****************************************** + +:Abstract: + + This document includes OpenStack control plane performance test results. + All tests have been performed regarding + :ref:`openstack_control_plane_performance_test_plan` + + +Environment description +======================= + +Environment contains 4 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 same network configuration: + +.. image:: configs/Network_Scheme.png + :alt: Network Scheme of the environment + +Here is the part of switch configuration for each switch port which 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, compute and compute-osd 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 | + | || memcached | + | || rabbitmq_server | + | || mysqld | + | || galera | + | || corosync | + | || pacemaker | + | || haproxy | + +------------+----------------------------+ + |compute || nova-compute | + | || neutron-l3-agent | + | || neutron-metadata-agent | + | || neutron-openvswitch-agent | + +------------+----------------------------+ + |compute-osd || nova-compute | + | || neutron-l3-agent | + | || neutron-metadata-agent | + | || neutron-openvswitch-agent | + | || ceph-osd | + +------------+----------------------------+ + +.. table:: Software version on servers with controller, compute and compute-osd 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 +------------------------------------------------- + +On this server should be installed Rally. How to do it you can find in +`Rally installation documentation`_ + +.. table:: Software version on server with rally role + + +------------+-------------------+ + |Software |Version | + +============+===================+ + |Rally |0.4.0 | + +------------+-------------------+ + |Ubuntu |Ubuntu 14.04.3 LTS | + +------------+-------------------+ + +Testing process +=============== + +.. table:: Some test parameters + + +--------------------------------+--------+ + |Name |Value | + +================================+========+ + |Volume size to create in Cinder |1GB | + +--------------------------------+--------+ + |Flavor to create VM from |m1.tiny | + +--------------------------------+--------+ + |Image name to create VM from |cirros | + +--------------------------------+--------+ + +1. Create work directory on server with Rally role. In future we will call that directory as WORK_DIR +2. Create directory "plugins" in WORK_DIR and copy to that directory + :download:`nova_performance.py <../../test_plans/control_plane/plugins/nova_performance.py>` plugin. +3. Create directory "scenarios" in WORK_DIR and copy to that directory + :download:`boot_attach_live_migrate_and_delete_server_with_secgroups.json + `, + :download:`create-and-delete-image.json ` + and :download:`keystone.json ` scenarios. +4. Create deployment.json file in WORK_DIR and fill it with OpenStack environment info. + It should looks like this: + + .. literalinclude:: configs/deployment.json + :language: bash + +5. Create job-params.yaml file in WORK_DIR and fill it with scenarios info. + It should looks like this: + + .. literalinclude:: configs/job-params.yaml + :language: bash + +6. Perform tests: + + .. literalinclude:: configs/run_test_script.sh + :language: bash + +As a result of this part we got the following HTML file: + +:download:`rally_report.html ` + +Test results +============ + +All values in tables below are in seconds. + +Cinder +------ + ++---------------+---------+----------+----------+---------+---------+ +| Operation | Mean | 90%ile | 50%ile | Max | Min | +| | (sec) | (sec) | (sec) | (sec) | (sec) | ++===============+=========+==========+==========+=========+=========+ +| create_volume | 2.619 | 2.754 | 2.593 | 2.988 | 2.453 | ++---------------+---------+----------+----------+---------+---------+ +| delete_volume | 2.339 | 2.449 | 2.323 | 2.666 | 2.200 | ++---------------+---------+----------+----------+---------+---------+ + +Glance +------ + ++--------------+----------+----------+----------+----------+-----------+ +| Operation | Mean | 90%ile | 50%ile | Max | Min | +| | (sec) | (sec) | (sec) | (sec) | (sec) | ++==============+==========+==========+==========+==========+===========+ +| create_image | 44.204 | 56.243 | 43.835 | 74.826 | 22.382 | ++--------------+----------+----------+----------+----------+-----------+ +| delete_image | 1.579 | 2.049 | 1.540 | 3.846 | 0.718 | ++--------------+----------+----------+----------+----------+-----------+ + +Keystone +-------- + ++--------------+-----------+----------+-----------+----------+-----------+ +| Operation | Mean | 90%ile | 50%ile | Max | Min | +| | (sec) | (sec) | (sec) | (sec) | (sec) | ++==============+===========+==========+===========+==========+===========+ +| authenticate | 0.099 | 0.135 | 0.093 | 0.718 | 0.054 | ++--------------+-----------+----------+-----------+----------+-----------+ + +Neutron +------- + ++--------------------------+----------+----------+----------+----------+----------+ +| Operation | Mean | 90%ile | 50%ile | Max | Min | +| | (sec) | (sec) | (sec) | (sec) | (sec) | ++==========================+==========+==========+==========+==========+==========+ +| create_20_rules | 4.535 | 4.883 | 4.515 | 5.577 | 3.873 | ++--------------------------+----------+----------+----------+----------+----------+ +| create_2_security_groups | 0.412 | 0.477 | 0.401 | 0.670 | 0.292 | ++--------------------------+----------+----------+----------+----------+----------+ +| delete_2_security_groups | 0.380 | 0.480 | 0.371 | 0.771 | 0.234 | ++--------------------------+----------+----------+----------+----------+----------+ + +Nova +---- + ++----------------------+-----------+-----------+-----------+-----------+-----------+ +| Operation | Mean | 90%ile | 50%ile | Max | Min | +| | (sec) | (sec) | (sec) | (sec) | (sec) | ++======================+===========+===========+===========+===========+===========+ +| attach_volume | 2.806 | 2.985 | 2.781 | 3.294 | 2.563 | ++----------------------+-----------+-----------+-----------+-----------+-----------+ +| boot_server | 11.989 | 12.937 | 11.953 | 14.265 | 9.482 | ++----------------------+-----------+-----------+-----------+-----------+-----------+ +| delete_server | 2.531 | 2.670 | 2.467 | 4.817 | 2.348 | ++----------------------+-----------+-----------+-----------+-----------+-----------+ +| detach_volume | 2.701 | 2.861 | 2.684 | 3.201 | 2.464 | ++----------------------+-----------+-----------+-----------+-----------+-----------+ +| find_host_to_migrate | 0.554 | 0.682 | 0.520 | 0.954 | 0.419 | ++----------------------+-----------+-----------+-----------+-----------+-----------+ +| live_migrate | 15.351 | 15.715 | 15.221 | 28.692 | 12.623 | ++----------------------+-----------+-----------+-----------+-----------+-----------+ + +.. references: + +.. _Rally installation documentation: https://rally.readthedocs.io/en/latest/install.html \ No newline at end of file diff --git a/doc/source/test_results/control_plane/rally_scenarios/boot_attach_live_migrate_and_delete_server_with_secgroups.json b/doc/source/test_results/control_plane/rally_scenarios/boot_attach_live_migrate_and_delete_server_with_secgroups.json new file mode 100644 index 0000000..8500ca9 --- /dev/null +++ b/doc/source/test_results/control_plane/rally_scenarios/boot_attach_live_migrate_and_delete_server_with_secgroups.json @@ -0,0 +1,68 @@ +{% set flavor_name = flavor_name or "m1.tiny" %} +{% set image_name = image_name or "^(cirros.*uec|TestVM)$" %} +{ + "NovaPerformancePlugin.boot_attach_live_migrate_and_delete_server_with_secgroups": [ + { + "args": { + "flavor": { + "name": "{{flavor_name}}" + }, + "image": { + "name": "{{image_name}}" + }, + "security_group_count": 2, + "rules_per_security_group": 10, + "boot_server_kwargs": { "auto_assign_nic" : true }, + "create_volume_kwargs": {}, + "volume_size": 1, + "disk_over_commit": false, + "min_sleep": 0, + "max_sleep": 0, + "block_migration": false, + "do_migration": true, + "do_delete": true + }, + "runner": { + "type": "constant", + "times": {{ 5 * compute }}, + "concurrency": {{concurrency}} + }, + "context": { + "users": { + "tenants": 1, + "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": 1 + } + }, + "sla": { + "failure_rate": { "max": 0 } + } + } + ] +} diff --git a/doc/source/test_results/control_plane/rally_scenarios/create-and-delete-image.json b/doc/source/test_results/control_plane/rally_scenarios/create-and-delete-image.json new file mode 100644 index 0000000..ca72b12 --- /dev/null +++ b/doc/source/test_results/control_plane/rally_scenarios/create-and-delete-image.json @@ -0,0 +1,25 @@ +{ + "GlanceImages.create_and_delete_image": [ + { + "args": { + "image_location": "http://{{http_server_with_glance_images}}/images/glance_1g_image.raw", + "container_format": "bare", + "disk_format": "raw" + }, + "runner": { + "type": "constant", + "times": 400, + "concurrency": 50 + }, + "context": { + "users": { + "tenants": 2, + "users_per_tenant": 3 + } + }, + "sla": { + "failure_rate": { "max": 0 } + } + } + ] +} diff --git a/doc/source/test_results/control_plane/rally_scenarios/keystone.json b/doc/source/test_results/control_plane/rally_scenarios/keystone.json new file mode 100644 index 0000000..58bc8a0 --- /dev/null +++ b/doc/source/test_results/control_plane/rally_scenarios/keystone.json @@ -0,0 +1,20 @@ +{ + "Authenticate.keystone": [ + { + "runner": { + "type": "rps", + "times": 120000, + "rps": 180 + }, + "context": { + "users": { + "tenants": 10, + "users_per_tenant": 10 + } + }, + "sla": { + "failure_rate": { "max": 0 } + } + } + ] +} diff --git a/doc/source/test_results/index.rst b/doc/source/test_results/index.rst index 328c438..eb96534 100644 --- a/doc/source/test_results/index.rst +++ b/doc/source/test_results/index.rst @@ -22,3 +22,5 @@ Test Results openstack_load/index 1000_nodes/index reliability/index + control_plane/main +