Performance tests

The current performance test of ACM-R is made by jmeter. The jmeter file is configured with a cycle where a composition in created and primed, and an instance is deployed, undeployed and deleted. The test is made again a Kubernetes environment defined in policy/docker.

We need to investigate the performance of ACM-R whit hundreds of compositions and instances deployed at same time and determine minimal/recommended requirements of memory and CPU.

Test using 100 compositions and instances

Test made with 5 user and 20 instances for each user. Components version: 7.1.1

mariadb

replica: 1

policy-clamp-runtime-acm/policy-clamp-ac-pf-ppnt/policy-clamp-ac-http-ppnt/policy-clamp-ac-k8s-ppnt

 Limits:
      cpu:     1
      memory:  4Gi
    Requests:
      cpu:        100m
      memory:     1Gi

system_cpu_usage (15m)

Note: runtime has reached the max limit CPU. Http participant has used less then 500m.

jvm_memory_used_bytes (15m)

Note: runtime and participants have not used so much memory.

http_server_requests_seconds_max (15m)

spring_data_repository_invocations_seconds_max (15m)

Test using 500 compositions and instances

Test made with 5 user and 100 instances for each user. Components version: 7.1.1

mariadb

replica: 1

policy-clamp-runtime-acm/policy-clamp-ac-pf-ppnt/policy-clamp-ac-http-ppnt/policy-clamp-ac-k8s-ppnt

 Limits:
      cpu:     1
      memory:  4Gi
    Requests:
      cpu:        100m
      memory:     1Gi

system_cpu_usage (2h)

jvm_memory_used_bytes (2h)

http_server_requests_seconds_max (2h)

Note: with 500 compositions, some endpoints like "/v2/compositions" needs paginations.

spring_data_repository_invocations_seconds_max (2h)

Test using 500 compositions and instances

Test made with 5 user and 100 instances for each user. Components version: 7.1.1

mariadb

replica: 1

policy-clamp-runtime-acm

 Limits:
      cpu:     2
      memory:  4Gi
    Requests:
      cpu:        100m
      memory:     1Gi

policy-clamp-ac-pf-ppnt/policy-clamp-ac-http-ppnt/policy-clamp-ac-k8s-ppnt

 Limits:
      cpu:     1
      memory:  2Gi
    Requests:
      cpu:        100m
      memory:     500Mi

system_cpu_usage (2h)

jvm_memory_used_bytes (2h)

http_server_requests_seconds_max (2h)

spring_data_repository_invocations_seconds_max (2h)

Test using 500 compositions and instances

Test made with 5 user and 100 instances for each user. Components version: 7.1.1

mariadb

replica: 2

policy-clamp-runtime-acm

 Limits:
      cpu:     2
      memory:  4Gi
    Requests:
      cpu:        100m
      memory:     1Gi

policy-clamp-ac-pf-ppnt/policy-clamp-ac-http-ppnt/policy-clamp-ac-k8s-ppnt

 Limits:
      cpu:     1
      memory:  2Gi
    Requests:
      cpu:        100m
      memory:     500Mi

system_cpu_usage (1h)

jvm_memory_used_bytes (1h)

microk8s kubectl top pod

NAME

CPU(cores)

MEMORY(bytes)

NAME

CPU(cores)

MEMORY(bytes)

kafka-deployment-5c87d497b-xwg9q

24m

683Mi

zookeeper-deployment-7ff87c7fcc-wpbhd

3m

132Mi

mariadb-galera-0

9m

184Mi

mariadb-galera-1

23m

214Mi

policy-clamp-ac-http-ppnt-7cfb879b7b-rw48q

5m

270Mi

policy-clamp-ac-k8s-ppnt-666fd747b8-gp26b

5m

230Mi

policy-clamp-ac-pf-ppnt-86bb4566bf-zdwz6

5m

235Mi

policy-clamp-runtime-acm-6cb79cfc7c-nchwc

33m

813Mi

prometheus-f66f97b6-grn72

4m

30Mi

http_server_requests_seconds_max (1h)

spring_data_repository_invocations_seconds_max (1h)