Publish test plan and test results for Neutron resource density
Change-Id: Icaa3bb0756dd26c298c35acf2fd6ffd336c247ef
This commit is contained in:

committed by
Ilya Shakhat

parent
6ef02236ed
commit
0f24c70b8e
@@ -9,4 +9,5 @@ Neutron features test plans
|
|||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 3
|
:maxdepth: 3
|
||||||
|
|
||||||
l3_ha/plan
|
l3_ha/plan
|
||||||
|
resource_density/plan
|
||||||
|
141
doc/source/test_plans/neutron_features/resource_density/plan.rst
Normal file
141
doc/source/test_plans/neutron_features/resource_density/plan.rst
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
.. _neutron_resource_density_test_plan:
|
||||||
|
|
||||||
|
============================================
|
||||||
|
OpenStack Neutron Resource Density Test Plan
|
||||||
|
============================================
|
||||||
|
|
||||||
|
:status: **draft**
|
||||||
|
:version: 1.0
|
||||||
|
|
||||||
|
:Abstract:
|
||||||
|
Is data-plane performance affected by existence of other OpenStack resources?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Test Plan
|
||||||
|
=========
|
||||||
|
|
||||||
|
The goal of this test plan is to investigate whether existing OpenStack
|
||||||
|
resources affect data-plane performance.
|
||||||
|
|
||||||
|
Out of all resources the following may theoretically affect performance:
|
||||||
|
* instances running on the same compute host - because of CPU consumption,
|
||||||
|
additional network namespaces, iptables, OVS ports and flows;
|
||||||
|
* routers - because of Linux network and OVS resources;
|
||||||
|
* security groups and rules - because of iptables rules.
|
||||||
|
|
||||||
|
|
||||||
|
Test Environment
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Preparation
|
||||||
|
^^^^^^^^^^^
|
||||||
|
|
||||||
|
This test plan is performed against existing OpenStack cloud.
|
||||||
|
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
+-----------+-------+----------------------------------------------------+
|
||||||
|
| 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.
|
||||||
|
|
||||||
|
+------------------+-------+-------------------------+
|
||||||
|
| 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.
|
||||||
|
|
||||||
|
+-----------------+-------+---------------------------+
|
||||||
|
| Parameter | Value | Comments |
|
||||||
|
+-----------------+-------+---------------------------+
|
||||||
|
| OS | | e.g. Ubuntu 14.04.3 |
|
||||||
|
+-----------------+-------+---------------------------+
|
||||||
|
| OpenStack | | e.g. Liberty |
|
||||||
|
+-----------------+-------+---------------------------+
|
||||||
|
| Hypervisor | | e.g. KVM |
|
||||||
|
+-----------------+-------+---------------------------+
|
||||||
|
| Neutron plugin | | e.g. ML2 + OVS |
|
||||||
|
+-----------------+-------+---------------------------+
|
||||||
|
| L2 segmentation | | e.g. VLAN or VxLAN or GRE |
|
||||||
|
+-----------------+-------+---------------------------+
|
||||||
|
| virtual routers | | HA |
|
||||||
|
+-----------------+-------+---------------------------+
|
||||||
|
|
||||||
|
Test Case: Data-plane performance measurements
|
||||||
|
----------------------------------------------
|
||||||
|
|
||||||
|
Description
|
||||||
|
^^^^^^^^^^^
|
||||||
|
|
||||||
|
Measurements are performed between 2 instances running on different compute
|
||||||
|
nodes. One of instances has floating IP assigned and thus is reachable from
|
||||||
|
outside. We are interested in following metrics: TCP max throughput and
|
||||||
|
UDP top packets throughput (for 64-byte packets).
|
||||||
|
|
||||||
|
TCP throughput is measured with `flent`_::
|
||||||
|
|
||||||
|
flent -H <destination> -f stats tcp_download
|
||||||
|
|
||||||
|
UDP throughput is measured with `iperf3`_::
|
||||||
|
|
||||||
|
iperf3 -c <destination> -u -l 64 -b 0 -t 20
|
||||||
|
|
||||||
|
List of performance metrics
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
======== =============== ================= ======================================
|
||||||
|
Priority Value Measurement Units Description
|
||||||
|
======== =============== ================= ======================================
|
||||||
|
1 Latency ms The network latency
|
||||||
|
1 TCP bandwidth Mbits/s TCP network bandwidth
|
||||||
|
1 UDP bandwidth packets per sec Number of UDP packets of 32 bytes size
|
||||||
|
======== =============== ================= ======================================
|
||||||
|
|
||||||
|
Reports
|
||||||
|
=======
|
||||||
|
|
||||||
|
Test plan execution reports:
|
||||||
|
* :ref:`neutron_neutron_resource_test_report`
|
||||||
|
|
||||||
|
.. references:
|
||||||
|
|
||||||
|
.. _flent: http://flent.org/
|
||||||
|
.. _iperf3: http://iperf.fr/
|
@@ -11,4 +11,4 @@ Neutron features scale testing
|
|||||||
|
|
||||||
l3_ha/test_results_liberty
|
l3_ha/test_results_liberty
|
||||||
l3_ha/test_results_mitaka
|
l3_ha/test_results_mitaka
|
||||||
|
resource_density/index
|
||||||
|
Binary file not shown.
After Width: | Height: | Size: 38 KiB |
Binary file not shown.
After Width: | Height: | Size: 42 KiB |
Binary file not shown.
After Width: | Height: | Size: 41 KiB |
@@ -0,0 +1,216 @@
|
|||||||
|
.. _neutron_neutron_resource_test_report:
|
||||||
|
|
||||||
|
==============================================
|
||||||
|
OpenStack Neutron Resource Density Test Report
|
||||||
|
==============================================
|
||||||
|
|
||||||
|
This report is generated for :ref:`neutron_resource_density_test_plan`.
|
||||||
|
|
||||||
|
Environment description
|
||||||
|
=======================
|
||||||
|
|
||||||
|
Cluster description
|
||||||
|
-------------------
|
||||||
|
* 3 controllers
|
||||||
|
* 2 compute nodes
|
||||||
|
|
||||||
|
Software versions
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
**OpenStack/System**:
|
||||||
|
Fuel/MOS 9.0, Ubuntu 14.04, Linux kernel 3.13, OVS 2.4.1
|
||||||
|
**Networking**
|
||||||
|
Neutron ML2 + OVS plugin, DVR, L2pop, MTU 1500
|
||||||
|
|
||||||
|
Hardware configuration of each server
|
||||||
|
-------------------------------------
|
||||||
|
|
||||||
|
Description of servers hardware
|
||||||
|
|
||||||
|
**Compute Vendor**:
|
||||||
|
HP ProLiant DL380 Gen9,
|
||||||
|
**CPU**
|
||||||
|
2 x Intel(R) Xeon(R) CPU E5-2680 v3 @2.50GHz (48 cores)
|
||||||
|
**RAM**:
|
||||||
|
256 Gb
|
||||||
|
**NIC**
|
||||||
|
2 x Intel Corporation Ethernet 10G 2P X710
|
||||||
|
|
||||||
|
|
||||||
|
Report
|
||||||
|
======
|
||||||
|
|
||||||
|
Preparation
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Measurements are performed between 2 instances deployed in L3 east-west
|
||||||
|
topology. To prepare:
|
||||||
|
#. Create new Neutron router. Plug into external network.
|
||||||
|
#. Create 2 Neutron networks, e.g. `east` and `west`. Plug them into
|
||||||
|
the router.
|
||||||
|
#. Boot 2 instances (Ubuntu Cloud Image can be used). Each instance should be
|
||||||
|
in its own network and on its own compute node. Public key may be required
|
||||||
|
to login into instance (in case of using Ubuntu).
|
||||||
|
#. Assign floating IP to one of instances.
|
||||||
|
|
||||||
|
The traffic is sent between 2 instances, from the one with floating IP to the
|
||||||
|
other. Phisically packets will go from one compute node to the other directly.
|
||||||
|
|
||||||
|
Measurements
|
||||||
|
------------
|
||||||
|
|
||||||
|
Baseline
|
||||||
|
^^^^^^^^
|
||||||
|
|
||||||
|
We start with measuring baseline numbers. During this test only 2 instances
|
||||||
|
exist.
|
||||||
|
|
||||||
|
================= ============================= ==========================
|
||||||
|
Latency, ms [σ] TCP throughput, Mbits/s [σ] UDP throughput, kpps [σ]
|
||||||
|
================= ============================= ==========================
|
||||||
|
1.8 [0.6] 7445 [850] 132 [6.5]
|
||||||
|
================= ============================= ==========================
|
||||||
|
|
||||||
|
|
||||||
|
10 instances per compute in separate network
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
There are 20 micro instances (10 per compute node). Each instance is
|
||||||
|
Cirros-based with 1 VCPU and 64MB RAM. Instances are plugged into separate
|
||||||
|
network.
|
||||||
|
|
||||||
|
================= ============================= ==========================
|
||||||
|
Latency, ms [σ] TCP throughput, Mbits/s [σ] UDP throughput, kpps [σ]
|
||||||
|
================= ============================= ==========================
|
||||||
|
2.0 [0.7] 6500 [807] 106 [4.5]
|
||||||
|
================= ============================= ==========================
|
||||||
|
|
||||||
|
30 instances per compute in separate network
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
There are 60 micro instances (30 per compute node). Each instance is
|
||||||
|
Cirros-based with 1 VCPU and 64MB RAM. Instances are plugged into separate
|
||||||
|
network.
|
||||||
|
|
||||||
|
================= ============================= ==========================
|
||||||
|
Latency, ms [σ] TCP throughput, Mbits/s [σ] UDP throughput, kpps [σ]
|
||||||
|
================= ============================= ==========================
|
||||||
|
2.2 [0.8] 6650 [600] 88 [3.0]
|
||||||
|
================= ============================= ==========================
|
||||||
|
|
||||||
|
10 instances per compute in tester network
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
There are 20 micro instances (10 per compute node). Each instance is
|
||||||
|
Cirros-based with 1 VCPU and 64MB RAM. Instances are plugged into `east`
|
||||||
|
network.
|
||||||
|
|
||||||
|
================= ============================= ==========================
|
||||||
|
Latency, ms [σ] TCP throughput, Mbits/s [σ] UDP throughput, kpps [σ]
|
||||||
|
================= ============================= ==========================
|
||||||
|
2.7 [1.0] 4930 [499] 101 [3.6]
|
||||||
|
================= ============================= ==========================
|
||||||
|
|
||||||
|
30 instances per compute in tester network
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
There are 60 micro instances (30 per compute node). Each instance is
|
||||||
|
Cirros-based with 1 VCPU and 64MB RAM. Instances are plugged into `east`
|
||||||
|
network.
|
||||||
|
|
||||||
|
================= ============================= ==========================
|
||||||
|
Latency, ms [σ] TCP throughput, Mbits/s [σ] UDP throughput, kpps [σ]
|
||||||
|
================= ============================= ==========================
|
||||||
|
5.4 [2.1] 2470 [130] 88 [2.3]
|
||||||
|
================= ============================= ==========================
|
||||||
|
|
||||||
|
10 instances and 10 routers per compute
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
There are 20 micro instances (10 per compute node). Each instance is
|
||||||
|
Cirros-based with 1 VCPU and 64MB RAM. Each instance is plugged into its own
|
||||||
|
network, which in turn is plugged into its own router.
|
||||||
|
|
||||||
|
================= ============================= ==========================
|
||||||
|
Latency, ms [σ] TCP throughput, Mbits/s [σ] UDP throughput, kpps [σ]
|
||||||
|
================= ============================= ==========================
|
||||||
|
2.3 [0.8] 5690 [630] 107 [5.0]
|
||||||
|
================= ============================= ==========================
|
||||||
|
|
||||||
|
30 instances and 30 routers per compute
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
There are 60 micro instances (30 per compute node). Each instance is
|
||||||
|
Cirros-based with 1 VCPU and 64MB RAM. Each instance is plugged into its own
|
||||||
|
network, which in turn is plugged into its own router.
|
||||||
|
|
||||||
|
================= ============================= ==========================
|
||||||
|
Latency, ms [σ] TCP throughput, Mbits/s [σ] UDP throughput, kpps [σ]
|
||||||
|
================= ============================= ==========================
|
||||||
|
2.2 [0.8] 5890 [707] 85 [1.9]
|
||||||
|
================= ============================= ==========================
|
||||||
|
|
||||||
|
30 instances and 30 routers per compute, QEMU paused
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
There are 60 micro instances (30 per compute node). Each instance is
|
||||||
|
Cirros-based with 1 VCPU and 64MB RAM. Each instance is plugged into its own
|
||||||
|
network, which in turn is plugged into its own router. QEMU processes are
|
||||||
|
paused to reduce noise load on CPU.
|
||||||
|
|
||||||
|
================= ============================= ==========================
|
||||||
|
Latency, ms [σ] TCP throughput, Mbits/s [σ] UDP throughput, kpps [σ]
|
||||||
|
================= ============================= ==========================
|
||||||
|
2.0 [0.7] 6640 [623] 103 [4.6]
|
||||||
|
================= ============================= ==========================
|
||||||
|
|
||||||
|
30 instances, 30 routers and 500 SG rules per instance, QEMU paused
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
There are 60 micro instances (30 per compute node). Each instance is
|
||||||
|
Cirros-based with 1 VCPU and 64MB RAM. Each instance is plugged into its own
|
||||||
|
network, which in turn is plugged into its own router. QEMU processes are
|
||||||
|
paused to reduce noise load on CPU. All instances have security group which
|
||||||
|
contains 500 rules (this results in ~17k iptables rules)
|
||||||
|
|
||||||
|
================= ============================= ==========================
|
||||||
|
Latency, ms [σ] TCP throughput, Mbits/s [σ] UDP throughput, kpps [σ]
|
||||||
|
================= ============================= ==========================
|
||||||
|
2.0 [0.7] 6658 [576] 97 [1.0]
|
||||||
|
================= ============================= ==========================
|
||||||
|
|
||||||
|
1000 security group rules
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
In this case we assign security group containing 1000 rules to test instances.
|
||||||
|
There is no measurable difference from the baseline data.
|
||||||
|
|
||||||
|
================= ============================= ==========================
|
||||||
|
Latency, ms [σ] TCP throughput, Mbits/s [σ] UDP throughput, kpps [σ]
|
||||||
|
================= ============================= ==========================
|
||||||
|
1.8 [0.6] 7039 [653] 130 [2.0]
|
||||||
|
================= ============================= ==========================
|
||||||
|
|
||||||
|
Conclusion
|
||||||
|
^^^^^^^^^^
|
||||||
|
|
||||||
|
It appears that two things have most of impact:
|
||||||
|
* neighbours, which produce slight CPU load
|
||||||
|
* OVS flows: the more flows, the less performance. Adding 30 instances to
|
||||||
|
compute node results in 180 new flows.
|
||||||
|
|
||||||
|
.. image:: chart_latency.png
|
||||||
|
|
||||||
|
The worst case for latency is when instances are co-located in the same network
|
||||||
|
as the tester. While presence of security group rules have no measurable effect
|
||||||
|
at all.
|
||||||
|
|
||||||
|
.. image:: chart_tcp.png
|
||||||
|
|
||||||
|
The worst case again when instances are co-located in the same network. CPU
|
||||||
|
noise also affects - the throughput reduces on ~10%.
|
||||||
|
|
||||||
|
.. image:: chart_udp.png
|
||||||
|
|
||||||
|
For UDP metric the most impact is introduced by CPU noise and presence of OVS
|
||||||
|
rules. With security group rules the numbers are the same as in the baseline.
|
@@ -0,0 +1,41 @@
|
|||||||
|
heat_template_version: 2013-05-23
|
||||||
|
|
||||||
|
resources:
|
||||||
|
east_private_net:
|
||||||
|
type: OS::Neutron::Net
|
||||||
|
properties:
|
||||||
|
name: my_net_east
|
||||||
|
|
||||||
|
east_private_subnet:
|
||||||
|
type: OS::Neutron::Subnet
|
||||||
|
properties:
|
||||||
|
network_id: { get_resource: east_private_net }
|
||||||
|
cidr: 10.1.0.0/16
|
||||||
|
|
||||||
|
router:
|
||||||
|
type: OS::Neutron::Router
|
||||||
|
properties:
|
||||||
|
external_gateway_info:
|
||||||
|
network: admin_floating_net
|
||||||
|
|
||||||
|
router_interface:
|
||||||
|
type: OS::Neutron::RouterInterface
|
||||||
|
properties:
|
||||||
|
router_id: { get_resource: router }
|
||||||
|
subnet_id: { get_resource: east_private_subnet }
|
||||||
|
|
||||||
|
server_1:
|
||||||
|
type: OS::Nova::Server
|
||||||
|
properties:
|
||||||
|
name: server_1
|
||||||
|
image: TestVM
|
||||||
|
flavor: m1.micro
|
||||||
|
networks:
|
||||||
|
- port: { get_resource: port_1 }
|
||||||
|
|
||||||
|
port_1:
|
||||||
|
type: OS::Neutron::Port
|
||||||
|
properties:
|
||||||
|
network_id: { get_resource: east_private_net }
|
||||||
|
fixed_ips:
|
||||||
|
- subnet_id: { get_resource: east_private_subnet }
|
Reference in New Issue
Block a user