Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

Table of Contents

Addresses  CPS-307 - Getting issue details... STATUS

Test Flow Description

According to requirements the test flow included following operation:

  • Create new anchor with unique name in given dataspace
  • Create data node - full data tree upload for given anchor
  • Update data node - node fragment replacement 
  • Remove anchor (and associated data)

The dataspace and schema set were predefined.

The service functionality was tested in two modes:

  • Embedded – the CPS was accessed directly via Java API
  • Remote – The CPS was accessed using REST API

Load:

  • The flow was repeated in a loop multiple times (defined with circles parameter);
    no delay between loops
  • The flow loops were executed in a multiple concurrent threads (threads parameter);
    all threads were started subsequently with no delay
  • each thread used same CPS service (embedded case) and REST client (remote case) instances
  • All the data used (except schema set preparation) was taken from memory (loaded on preparation stage)


Full test application flow is shown on diagram below


Test Data

Yang model (schema set) based on:

  • iana-if-type@2017-01-19.yang
  • ieee802-dot1q-types.yang
  • ietf-inet-types@2013-07-15.yang
  • ietf-interfaces@2018-02-20.yang
  • ietf-l2-topology@2020-11-15.yang
  • ietf-l2-topology-state@2020-11-15.yang
  • ietf-network@2018-02-26.yang
  • ietf-network-state@2018-02-26.yang
  • ietf-network-topology@2018-02-26.yang
  • ietf-network-topology-state@2018-02-26.yang
  • ietf-yang-types@2013-07-15.yang

Full data JSON is (taken as is from from RFC-8944 Appendix-B):

  • ietf-network-sample-rfc8944.json (52 data nodes total)

Update data:

// node parent xpath: /networks/network[@network-id='l2-topo-example']/node[@node-id='D3']
// replacement fragment:
{ 
    "ietf-l2-topology:l2-node-attributes":
        {
	    	"management-address": [ "192.0.2.3", "2001:db8:0:3::" ]
		} 
}



Environment

The load test was performed using dedicated Spring Boot Application. The application was executed directly from IDE.

Remote services were deployed as docker containers. Docker was running on same machine.



Hardware details

Laptop DELL Latitude 5500

  • Processors: 8 × Intel® Core™ i7-8665U CPU @ 1.90GHz
  • Memory: 15,5 GiB of RAM
  • lshw > lshw.txt

Software details

OS

  • Operating System: Kubuntu 20.04
  • KDE Plasma Version: 5.18.5
  • KDE Frameworks Version: 5.68.0
  • Qt Version: 5.12.8
  • Kernel Version: 5.4.0-70-generic
  • OS Type: 64-bit

Docker

  • Docker version 20.10.5, build 55c4c88

Test application runtime

  • OpenJDK version 13.0.4, 2020-07-14
  • OpenJDK Runtime Environment (build 13.0.4+8-Ubuntu-120.04)
  • OpenJDK 64-Bit Server VM (build 13.0.4+8-Ubuntu-120.04, mixed mode)
  • java -XX:+PrintFlagsFinal -version > java-print-flags-final.txt


Test Results

Operation execution time

The operation per seconds was calculated as 1000/(exec time in millis).

OperationEmbedded FlowRemote Flow

Execution time, millisecondsOperations per secondExecution time, millisecondsOperations per second

MinMaxAverageMinMaxAverageMinMaxAverageMinMaxAverage
Threads: 2
Circles: 500
CREATE ANCHOR0.99229.1112.07834.3511008.366481.18561.87152.43769.086.5616.16314.476
CREATE NODE13.171600.11523.8981.66675.92341.84474.617201.42185.4994.96513.40211.696
UPDATE NODE1.9227.5384.30636.314520.911232.24862.098249.31970.4964.01116.10414.185
DELETE ANCHOR2.55121.7134.35346.055392.038229.70462.77144.29971.0536.9315.93114.074

Threads: 10
Circles: 100

CREATE_ANCHOR1.64678.2076.78912.787607.464147.2966.84326.61140.8443.06214.9617.1
CREATE_NODE17.1771115.065105.9860.89758.2199.43582.275325.542170.053.07212.1545.881
UPDATE_NODE3.218115.99115.5168.621310.78864.44963.226256.484141.4893.89915.8167.068
DELETE_ANCHOR3.5653.77611.74218.596280.90485.16364.741411.13143.7972.43215.4466.954
Threads: 20
Circles: 50
CREATE_ANCHOR1.891177.36128.4125.638528.77935.19679.077568.126297.9161.7612.6463.357
CREATE_NODE20.4261781.881186.9420.56148.9585.34986.274978.945376.1451.02211.5912.659
UPDATE_NODE3.623401.14186.0792.493275.97811.61773.062615.295297.5391.62513.6873.361
DELETE_ANCHOR3.937114.20518.5548.756253.9953.89664.017588.028299.1711.70115.6213.343
Threads: 50
Circles: 20
CREATE_ANCHOR2.498805.03789.2721.242400.32811.202129.3122165.287788.8260.4627.7331.268
CREATE_NODE41.463317.529435.9170.30124.122.294115.4052403.888929.2740.4168.6651.076
UPDATE_NODE6.0391127.585323.5450.887165.5823.09186.8231729.146784.1390.57811.5181.275
DELETE_ANCHOR6.412364.36732.3142.744155.95630.94680.5362033.905785.3580.49212.4171.273


Resource usage

Below are resource usage diagrams (VisualVM monitor screenshots) for used Threads/Circles combinations.

Embedded then remote load tests were performed via single application execution (see test flow diagram above)

Threads: 2
Circles: 500
Threads: 10
Circles: 100



Threads: 20
Circles: 50
Threads: 50
Circles: 20



Following (calculated by default) heap settings were used:

ErgoHeapSizeLimit                        = 0
HeapSizePerGCThread                      = 43620760
InitialHeapSize                          = 260046848
LargePageHeapSizeThreshold               = 134217728
MaxHeapSize                              = 4148166656
NonNMethodCodeHeapSize                   = 5836300
NonProfiledCodeHeapSize                  = 122910970
ProfiledCodeHeapSize                     = 122910970

Full dump of JVM flags is listed in attachment java-print-flags-final.txt





  • No labels