Add pod startup time results for k8s
Change-Id: I7947b37fdcac1dcc312cdd086b78f95342212982
This commit is contained in:
parent
1ef9268e1a
commit
6473279f78
@ -148,6 +148,33 @@ Measuring values of API latencies of requests which make actions on containers
|
||||
| POST | |
|
||||
+---------------------------------+-----------------------------------------+
|
||||
|
||||
Test Case #1.5: Container creation startup latency extended measurement
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
Description
|
||||
^^^^^^^^^^^
|
||||
|
||||
The is a specific interest in understanding not only when container cluster
|
||||
system is reporting that the requested container is up and running, but when
|
||||
this container really becomes operable in data plane terms. This can be
|
||||
measured via scheduling and spawning containers, that will report about their
|
||||
status to some centralized manager. This data needs to be collected and then
|
||||
carefully analyzed, especially keeping attention to possible regressions (if
|
||||
huge number of containers is created - either at once or one by one).
|
||||
|
||||
List of performance metrics
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. table:: list of test metrics to be collected during this test
|
||||
|
||||
+-----------------------------+---------------------------------------------+
|
||||
| Parameter |Description |
|
||||
+=============================+=============================================+
|
||||
| CONTAINER_STARTUP_LATENCY | | The time which a container management |
|
||||
| | | system needs to spawn workable and fully |
|
||||
| | | operable container. |
|
||||
+-----------------------------+---------------------------------------------+
|
||||
|
||||
Test Case #2: API latencies of any other supported requests
|
||||
-----------------------------------------------------------
|
||||
Description
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 222 KiB |
Binary file not shown.
After Width: | Height: | Size: 204 KiB |
Binary file not shown.
After Width: | Height: | Size: 191 KiB |
@ -8,7 +8,7 @@ Results of measuring of API performance of Kubernetes
|
||||
|
||||
This document includes performance test results of Kubernetes API.
|
||||
All tests have been performed regarding
|
||||
:ref:`Measuring_of_API_performance_of_Kubernetes`
|
||||
:ref:`Measuring_of_API_performance_of_container_cluster_system`
|
||||
|
||||
|
||||
Environment description
|
||||
@ -81,7 +81,7 @@ bond0 interface of a server:
|
||||
spanning-tree bpduguard enable
|
||||
no snmp trap link-status
|
||||
|
||||
Software configuration of kubernetes service
|
||||
Software configuration of Kubernetes service
|
||||
--------------------------------------------
|
||||
Setting up Kubernetes
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -196,7 +196,7 @@ You can see more from the `load.py`_ code.
|
||||
+----------------------------+------------------------------------------+
|
||||
| Ubuntu | Ubuntu 14.04 LTS |
|
||||
+----------------------------+------------------------------------------+
|
||||
| e2e-test (kubernetes repo) | v1.3.5 |
|
||||
| e2e-test (Kubernetes repo) | v1.3.5 |
|
||||
+----------------------------+------------------------------------------+
|
||||
| Docker | 1.11.2, build b9f10c9 |
|
||||
+----------------------------+------------------------------------------+
|
||||
@ -212,7 +212,7 @@ Preparation
|
||||
-----------
|
||||
1.
|
||||
Kubernetes was set up on top of 10 nodes as described in
|
||||
`Setting up kubernetes`_ section.
|
||||
`Setting up Kubernetes`_ section.
|
||||
|
||||
2.
|
||||
e2e-test container was running on top of infrastructure one-node Kubernetes
|
||||
@ -292,6 +292,44 @@ Please note, that numbers of pods and other items depend on numbers of nodes.
|
||||
| :scale: 50 | :scale: 50 |
|
||||
+---------------------------------------------+-------------------------------+
|
||||
|
||||
Kubernetes pod startup latency measurement
|
||||
------------------------------------------
|
||||
|
||||
For this testing purposes `MMM(MySQL/Master/Minions) testing suite`_ was used
|
||||
(more information in `Pod startup time measurement toolkit`_ section).
|
||||
|
||||
This toolkit was run against 150 nodes Kubernetes environment installed via
|
||||
`Kargo`_ deployment tool. The most basic configuration (1 replication
|
||||
controller, N pods, each pod containing 1 container) was run against the
|
||||
environment. Additional configurations will be tested and results published
|
||||
in terms of further researches.
|
||||
|
||||
The first run includes information about 500 pods being run on fresh Kubernetes
|
||||
environment (no tests have been run on it before):
|
||||
|
||||
.. image:: MMM-tool/500_containers_first_run.png
|
||||
:alt: Containers startup time (500 containers, first run)
|
||||
:width: 650px
|
||||
|
||||
This weird timings pattern is related to the fact that first 500 containers
|
||||
pack was run against not warmed up environment (minions images were not
|
||||
pre-loaded on Kubernetes worker nodes, that means that during first run Docker
|
||||
registry/repo/etc was really stressed).
|
||||
|
||||
The same scenario run against the warmed-up environment will have linear
|
||||
pattern (with ~50 milliseconds per container startup):
|
||||
|
||||
.. image:: MMM-tool/500_containers_second_run.png
|
||||
:alt: Containers startup time (500 containers, second run)
|
||||
:width: 650px
|
||||
|
||||
This pattern will remain the same with bigger number of containers (15000
|
||||
containers, the same ~50 milliseconds per container startup):
|
||||
|
||||
.. image:: MMM-tool/15000_containers.png
|
||||
:alt: Containers startup time (15000 containers)
|
||||
:width: 650px
|
||||
|
||||
Applications
|
||||
============
|
||||
Files and scripts to build Docker container with e2e-test tool
|
||||
@ -320,9 +358,35 @@ e2e-tests/create_rst_table_from_k8s_e2e_log.py:
|
||||
.. literalinclude:: e2e-tests/create_rst_table_from_k8s_e2e_log.py
|
||||
:language: python
|
||||
|
||||
Pod startup time measurement toolkit
|
||||
------------------------------------
|
||||
|
||||
for `Kubernetes pod startup latency measurement`_ test case
|
||||
`MMM(MySQL/Master/Minions) testing suite`_ was used.
|
||||
|
||||
This is a client/server set for testing speed of k8s/docker/networking
|
||||
scheduling capabilities speed.
|
||||
|
||||
Architecture is simple and consist of the following:
|
||||
|
||||
* MariaDB/MySQL service (replication controller with only one replica)
|
||||
* Master service, a simple Python application based on `Flask`_ framework with
|
||||
multiple threads and producer/consumer queue for SQL inserts
|
||||
* Minion replication controller - a simple bash script which registers minions
|
||||
on master service.
|
||||
|
||||
This approach guarantees that container will report about its status itself,
|
||||
so any issues (e.g. too slow startup or unsuccessful at all attempt to create
|
||||
a container will be observed in the testing results).
|
||||
|
||||
For more details please proceed to the
|
||||
`MMM(MySQL/Master/Minions) testing suite`_ documentation.
|
||||
|
||||
|
||||
.. references:
|
||||
|
||||
.. _Kargo: https://github.com/kubespray/kargo
|
||||
.. _e2e-tests: https://github.com/kubernetes/kubernetes/blob/release-1.4/docs/devel/e2e-tests.md
|
||||
.. _load.py: https://github.com/kubernetes/kubernetes/blob/master/test/e2e/load.go
|
||||
.. _load.py: https://github.com/kubernetes/kubernetes/blob/master/test/e2e/load.go
|
||||
.. _MMM(MySQL/Master/Minions) testing suite: https://github.com/AleksandrNull/MMM
|
||||
.. _Flask: http://flask.pocoo.org/
|
Loading…
Reference in New Issue
Block a user