3. Measuring of API performance of container cluster systems

status:ready
version:1.0
Abstract:This document describes a test plan for quantifying the API performance of container cluster systems.

3.1. Test Plan

3.1.1. Test Environment

3.1.1.1. Preparation

To test container cluster some tool dedicated to measure CRUD operations latency is needed. For Kubernetes container cluster system we can propose “Load test” of e2e-tests tool.

3.1.1.2. Environment description

Test results MUST include a description of the environment used. The following items should be described:

  • Hardware configuration of each server. If virtual machines are used then both physical and virtual hardware should be fully documented. An example format is given below:
Description of servers hardware
server name    
role    
vendor,model    
operating_system    
CPU vendor,model    
processor_count    
core_count    
frequency_MHz    
RAM vendor,model    
amount_MB    
NETWORK interface_name    
vendor,model    
bandwidth    
STORAGE dev_name    
vendor,model    
SSD/HDD    
size    
  • Configuration of hardware network switches The configuration file from the switch can be downloaded and attached.
  • Configuration of virtual machines and virtual networks (if they are used) The configuration files can be attached, along with the mapping of virtual machines to host machines.
  • Network scheme. The plan should show how all hardware is connected and how the components communicate. All ethernet/fibrechannel and VLAN channels should be included. Each interface of every hardware component should be matched with the corresponding L2 channel and IP address.
  • Software configuration of the container cluster system sysctl.conf and any other kernel file that is changed from the default should be attached. List of installed packages should be attached. Specifications of the operating system, network interfaces configuration, and disk partitioning configuration should be included. If distributed provisioning systems are to be tested then the parts that are distributed need to be described.
  • Software configuration of the node with test tool The operating system, disk partitioning scheme, network interface configuration, installed packages and other components of client nodes define limits which a client can experience during sending requests and getting responses to/from docker repository.

3.1.2. Test Case #1: API latencies of requests which make actions on containers

3.1.2.1. Description

During this test basic actions with containers like start, delete, update should be performed and API latencies should be measured.

3.1.2.2. List of performance metrics

list of test metrics to be collected during this test
Parameter Description
CONTAINER_API_LATENCIES
(GET,PUT,POST,DELETE, LIST
types of requests)
The time which a client spends to get a
response from container system API to make
an action on a docker container

3.1.2.3. Measuring values of API latencies of requests which make actions on containers

  1. Deploy container cluster system from scratch. We should be sure that there is no data in the container cluster system.
  2. Make create, delete, update and any available requests to perform an action on container to API of container cluster system and measure latencies of the responses. The API client which you use should’t crate a big load on the cluster system. The load should be spreading over time.
  3. As a result of the previous step you should be able to provide the table with 99 percentile of API latencies in depend on type of requests. You need to fill the table similar the table bellow with calculated values:
API latencies of requests which make actions on containers
Method Perc99
PUT  
GET  
LIST  
DELETE  
POST  

3.1.3. Test Case #1.5: Container creation startup latency extended measurement

3.1.3.1. 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).

3.1.3.2. List of performance metrics

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.

3.1.4. Test Case #2: API latencies of any other supported requests

3.1.4.1. Description

In opposite of Test Case #1: API latencies of requests which make actions on containers in in this test case requests different from actions with containers should be performed and API latencies should be measured. The supported by API of container cluster system requests depend on the container cluster system. For example for Kubernetes it can be actions with replicationcontrollers or namespaces.

3.1.4.2. List of performance metrics

list of test metrics to be collected during this test
Parameter Description
API_LATENCIES
(GET,PUT,POST,DELETE, LIST
types of requests)
The time which a client spends to get a
response from container system API

3.1.4.3. Measuring values of API latencies of any other supported requests

  1. Deploy container cluster system from scratch. We should be sure that there is no data in the container cluster system.
  2. Make available requests to API of container cluster system and measure latencies of the responses. The API client which you use should’t crate a big load on the cluster system. The load should be spreading over time.
  3. As a result of the previous step you should be able to provide the table with 99 percentile of API latencies in depend on type of requests. You need to fill the table similar the table bellow with calculated values:
Table #1 API latencies of requests which make actions on item #1
Method Perc99
PUT  
GET  
LIST  
DELETE  
POST  
Table #2 API latencies of requests which make actions on item #2
Method Perc99
PUT  
GET  
LIST  
DELETE  
POST  

3.2. Reports

Test plan execution reports: