PTF - Performance testing of CPU=0 for Services (mcpt)

Overview

  • In this report, PTF investigates the impact of setting CPU allocations to 0 units across all tasks within an AWS ECS cluster. The purpose of this study is to determine whether removing CPU constraints reveals the actual CPU usage of the tasks and to assess how this adjustment affects overall performance. By comparing key workflows across different environments, we aim to identify any potential changes in efficiency, throughput, or resource utilization that may result from setting CPU = 0. The findings from these tests will help inform best practices for resource allocation and performance optimization within ECS clusters.

PERF-959 - Getting issue details... STATUS  

Summary

  • During the tests Parameter CPU=0 improved performance for a several workflows, like MSF_TC: mod search by auth query, MSF_TC: mod search by contributors, MSF_TC: mod search by title query and ULR_TC: Users loan Renewal Transaction.
  • No memory leaks, memory consumption was stable during all of the tests.

  • Tests had 100% errors count for AIE_TC: Create Invoices, AIE_TC: Invoices Approve, AIE_TC: Paying Invoices, TC: Receiving-an-Order-Line, Unreceiving-a-Piece and Unreceiving-a-Piece Workflows because data was not regenerated.  

Test Runs

Test #DescriptionStatus
Test 1The Baseline MCPT Environment configuration was applied, and CPU=0 was set for all modules,  Fixed Load (average case) MOBIUS test was run.Completed
Test 2The Baseline MCPT Environment configuration was applied, and CPU=0 was set for all modules,  Fixed Load (high load case) MOBIUS test was run.Completed
Test 3The Baseline MCPT Environment configuration was applied, and CPU=0 was set for all modules,  Fixed Load (average case) MOBIUS test was run (rerun Test 1).Completed
Test 4The Baseline MCPT Environment configuration was applied, and CPU=1 was set for all modules,  Fixed Load (average case) MOBIUS test was run.Completed
Test 5The Baseline MCPT Environment configuration was applied, and CPU=2 was set for all modules,  Check In\Check Out with 20 users for one tenant on 30 minutes test was run.Completed
Test 6The Baseline MCPT Environment configuration was applied, and CPU=2 was set for all modules,  Data Import - Create with 25k and 100k records files tests were run.Completed
Test 7The Baseline QCP1 Environment configuration was applied, and CPU=2 was set for all modules,  Check In\Check Out with 20 users for one tenant on 30 minutes test was run.Completed
Test 8The Baseline QCP1 Environment configuration was applied, and CPU=2 was set for all modules,  Data Import - Create with 25k and 100k records files tests were run.Completed
Test 9The Baseline QCP1 Environment configuration was applied, and CPU=0 was set for all modules,  Check In\Check Out with 20 users for one tenant on 30 minutes test was run.Completed
Test 10The Baseline QCP1 Environment configuration was applied, and CPU=0 was set for all modules,  Data Import - Create with 25k and 100k records files tests were run.Completed

Test Results

This table contains durations for all Workflows. 

Workflow

Test 1
(average case)

CPU=0

Test 2
(high load)

CPU=0

Test 3
(average case) 

CPU=0

Test 4
(average case) 

CPU=1


Average
(milliseconds)
ErrorsAverage
(milliseconds)
ErrorsAverage
(milliseconds)
ErrorsAverage
(milliseconds)
Errors
AIE_TC: Create Invoices8350100%13458100%7421100%8251100%
AIE_TC: Invoices Approve3180100%5251100%2960100%3088100%
AIE_TC: Paying Invoices3289100%4919100%3060100%3285100%
CICO_TC_Check-In Controller23230%33227%22280%23130%
CICO_TC_Check-Out Controller41540%570010%38960%39850%
CSI_TC:Share local instance1300819%1478114%1296920%1302219%
DE_Exporting MARC Bib records custom workflow529830%37991295%787590%1007000%
DE_Exporting MARC Bib records workflow427850%40202698%739570%1097940%
EVA_TC: View Account8033%9623%7001%8323%
ILR_TC: Create ILR15270%22154%14510%15180%
MSF_TC: mod search by auth query6720%18307%30964%10230%
MSF_TC: mod search by boolean query1650%4852%7371%2120%
MSF_TC: mod search by contributors3980%10633%16642%6040%
MSF_TC: mod search by filter query2860%7132%10702%4170%
MSF_TC: mod search by keyword query2840%6581%10061%4220%
MSF_TC: mod search by subject query4070%11121%15302%6230%
MSF_TC: mod search by title query10310%24491%29071%17580%
OPIH_/oai/records60420%4649100%35870%54480%
POO_TC: Add Order Lines553340%9907619%544400%552240%
POO_TC: Approve Order425670%7902212%421910%429070%
POO_TC Create Order319330%5646813%314060%321660%
RTAC_TC: edge-rtac41500%47260%40840%40990%
SDIC_Single Record Import (Create)1377719%2047513%1377320%1387319%
SDIU_Single Record Import (Update)195490%3663916%195821%195680%
TC: Receiving-an-Order-Line45895100%83735100%45888100%46890100%
Serials-Receiving-Workflow48584100%86692100%47338100%48019100%
Unreceiving-a-Piece8080100%13729100%8013100%8297100%
ULR_TC: Users loan Renewal Transaction31890%48186%29700%31250%


This table contains durations for Check In\Check Out tests. 

RequestsExecutions Response Times (ms)   

#SamplesError %Average90th pct95th pct99th pct
Check-In Controller (MCPT)
CPU=2
24800%4905796661576

Check-Out Controller (MCPT)

CPU=2

24070%1018113912772246

Check-In Controller (QCP1)

CPU=2

22140.63%583659702880

Check-Out Controller (QCP1)

CPU=2

29750.94%953107711661448

Check-In Controller (QCP1)

CPU=0

21910.68%612672719887

Check-Out Controller (QCP1)

CPU=0

29370.89%984110411921442


This table contains durations for Data Import tests. 

 Job ProfileFile

Duration

(h:mm:ss)

Status

PTF Create 2 (MCPT)

CPU=2

25k.mrc

0:15:21COMMITTED

PTF Create 2 (MCPT)

CPU=2

100k.mrc

1:01:25COMMITTED

PTF - Create 2 (QCP1)

CPU=2

25k.mrc

0:14:52COMMITTED

PTF - Create 2 (QCP1)

CPU=2

100k.mrc


0:50:36COMMITTED

PTF - Create 2 (QCP1)

CPU=0

25k.mrc0:14:47COMMITTED

PTF - Create 2 (QCP1)

CPU=0

100k.mrc0:52:34COMMITTED

Comparison

This graph shows the durations of all workflows compared between tests.

Average Case workflows: Part 1.

 

Average Case workflows: Part 2.

High Load workflows: Part 1.


High Load workflows: Part 2.

High Load workflows: Part 3.


Test №1-2-3

The Baseline MCPT Environment configuration was applied, and CPU=0 was set for all modules

Instance CPU Utilization

Service CPU Utilization

Here we can see that nginx-okapi modules used 20% CPU for Test-2 (high load case).

Service Memory Utilization

Here we can see that Memory exceed 113% of the unit power mod-data-export-b modules for Test-2 (high load case).


Kafka metrics


DB CPU Utilization

DB CPU was 99% average with ERW: Exporting Receiving Information

DB Connections

Max number of DB connections was 6000 in maximum fir Test 1, 7500 for Test 2 and 6000 for Test 3.

DB load

                                                                                                                    

Top SQL-queries

Test №4

The Baseline MCPT Environment configuration was applied, and CPU=1 was set for all modules.

Instance CPU Utilization

Service CPU Utilization

Here we can see that okapi used 100000% of the CPU power parameter CPU=1 for module.

Service Memory Utilization

Here we can't see any sign of memory leaks on every module. Memory shows stable trend.


Kafka metrics



DB CPU Utilization

DB CPU was 99% average with ERW: Exporting Receiving Information

DB Connections

Max number of DB connections was 5600.

DB load

                                                                                                                     

Top SQL-queries


Test №5

The Baseline MCPT Environment configuration was applied, and CPU=2 was set for all modules,  Check In\Check Out with 20 users for one tenant on 30 minutes test was run.

Instance CPU Utilization

Service CPU Utilization

Here we can see that mod-permissions used 18300% of the CPU power of the parametr CPU=2.

Service Memory Utilization

Here we can't see any sign of memory leaks on every module. Memory shows stable trend.


Kafka metrics




DB CPU Utilization

DB CPU was 64% maximum.

DB Connections

Max number of DB connections was 2112.

DB load

                                                                                                                    

Top SQL-queries

Test №6

The Baseline MCPT Environment configuration was applied, and CPU=2 was set for all modules,  Data Import - Create with 25k and 100k records files tests were run.

Instance CPU Utilization

Service CPU Utilization

Here we can see that mod-source-record-storage-b used 72000% of the CPU power of parameter CPU=2.

Service Memory Utilization

Here we can't see any sign of memory leaks on every module. Memory shows stable trend.

Kafka metrics



DB CPU Utilization

DB CPU was 99%.

DB Connections

Max number of DB connections was 2500.

DB load

                                                                                                                    

Top SQL-queries


Test №7

The Baseline QCP1 Environment configuration was applied, and CPU=2 was set for all modules,  Check In\Check Out with 20 users for one tenant on 30 minutes test was run.

Instance CPU Utilization


Service CPU Utilization

Here we can see that okapi used 20% of the absolute CPU power of the container instance.

Service Memory Utilization

Here we can't see any sign of memory leaks on every module. Memory shows stable trend.


Kafka metrics


DB CPU Utilization

DB CPU was 57%.

DB Connections

Max number of DB connections was 3650.


Test №8

The Baseline QCP1 Environment configuration was applied, and CPU=2 was set for all modules,  Data Import - Create with 25k and 100k records files tests were run.

Instance CPU Utilization

Service CPU Utilization

Here we can see that okapi used 57000% CPU of unit power.

Service Memory Utilization

Here we can't see any sign of memory leaks on every module. Memory shows stable trend.

Kafka metrics


DB CPU Utilization

DB CPU was 98%.

DB Connections

Max number of DB connections was 971.



Test №9

The Baseline QCP1 Environment configuration was applied, and CPU=0 was set for all modules,  Check In\Check Out with 20 users for one tenant on 30 minutes test was run.

Instance CPU Utilization

Service CPU Utilization

Here we can see that okapi used 15% of the absolute CPU power of the container instance.

Service Memory Utilization

Here we can't see any sign of memory leaks on every module. Memory shows stable trend.


Kafka metrics



DB CPU Utilization

DB CPU was 98%.

DB Connections

Max number of DB connections was 5150.



Test №10

The Baseline QCP1 Environment configuration was applied, and CPU=0 was set for all modules,  Data Import - Create with 25k and 100k records files tests were run.

Instance CPU Utilization

Service CPU Utilization

Here we can see that okapi used 38% of the unit CPU power.

Service Memory Utilization

Here we can't see any sign of memory leaks on every module. Memory shows stable trend.


Kafka metrics



DB CPU Utilization

DB CPU was maximum 92%.

DB Connections

Max number of DB connections was 921.


Appendix

Infrastructure

PTF - Baseline MCPT environment configuration

  • 14 m6g.2xlarge EC2 instances located in US East (N. Virginia)us-east-1
  • 1 database  instance, writer

    NameMemory GIBvCPUs

    db.r6g.4xlarge

    128 GiB16 vCPUs
  • Open Search ptf-test 
    • Data nodes
      • Instance type - r6g.2xlarge.search
      • Number of nodes - 4
      • Version: OpenSearch_2_7_R20240502
    • Dedicated master nodes
      • Instance type - r6g.large.search
      • Number of nodes - 3
  • MSK ptf-KRaft-mode
    • brokers, kafka.m7g.xlarge brokers in 2 zones
    • Apache Kafka version 3.7.x 

    • EBS storage volume per broker 300 GiB

    • auto.create.topics.enable=true
    • log.retention.minutes=480
    • default.replication.factor=3


 mcpt modules memory and CPU parameters

Cluster Resources - mcpt-pvt 

ModuleTask Def. RevisionModule VersionTask CountMem Hard LimitMem Soft limitCPU unitsXmxMetaspaceSizeMaxMetaspaceSize
mod-remote-storage18mod-remote-storage:3.0.124920447210243960512512
mod-ncip12mod-ncip:1.14.42102489612876888128
mod-finance-storage14mod-finance-storage:8.5.041024896102470088128
mod-agreements17mod-agreements:6.0.2015921488128000
mod-ebsconet12mod-ebsconet:2.1.1212481024128700128256
edge-sip212edge-sip2:3.1.12102489612876888128
mod-consortia18mod-consortia:1.0.325136477610244416384512
mod-organizations12mod-organizations:1.8.02102489612876888128
mod-settings17mod-settings:1.0.22102489620076888128
edge-dematic15edge-dematic:2.1.11102489612876888128
mod-data-import15mod-data-import:3.0.71204818442561292384512
mod-search18mod-search:3.0.5425922480204814405121024
mod-tags12mod-tags:2.1.02102489612876888128
mod-authtoken22mod-authtoken:2.14.1614401152102492288128
edge-courses12edge-courses:1.3.02102489612876888128
edge-inventory6edge-inventory:1.4.02102489612876888128
mod-inventory-update12mod-inventory-update:3.2.12102489612876888128
mod-notify12mod-notify:3.1.02102489612876888128
mod-configuration13mod-configuration:5.9.24102489612876888128
mod-orders-storage13mod-orders-storage:13.6.04102489651270088128
edge-caiasoft12edge-caiasoft:2.1.02102489612876888128
mod-login-saml15mod-login-saml:2.7.22102489612876888128
mod-erm-usage-harvester7mod-erm-usage-harvester:4.4.12102489612876888128
mod-password-validator12mod-password-validator:3.1.0214401298128768384512
mod-gobi13mod-gobi:2.7.12102489612876888128
mod-licenses15mod-licenses:5.0.22248023121281792384512
mod-fqm-manager12mod-fqm-manager:1.0.32102489612876888128
edge-dcb9edge-dcb:1.0.22102489612876888128
mod-bulk-operations18mod-bulk-operations:1.1.923072260010241536384512
mod-graphql12mod-graphql:1.12.00102489612876888128
mod-finance12mod-finance:4.8.04102489612876888128
mod-erm-usage7mod-erm-usage:4.6.02102489612876888128
mod-lists15mod-lists:1.0.52102489612876888128
mod-copycat12mod-copycat:1.5.02102489612876888128
mod-permissions26mod-permissions:6.4.04168415445121024384512
mod-entities-links17mod-entities-links:2.0.4225922480400144001024
pub-edge6pub-edge:2023.06.142102489612876800
mod-orders13mod-orders:12.7.142048144010241024384512
edge-patron14edge-patron:5.0.0.1582102489625676888128
edge-ncip12edge-ncip:1.9.22102489612876888128
mod-users-bl12mod-users-bl:7.6.021440115251292288128
edge-ea-data-export7edge-ea-data-export:4.1.02102489612876888128
mod-invoice13mod-invoice:5.7.241440115251292288128
mod-inventory-storage19mod-inventory-storage:27.0.444096369020483076384512
mod-user-import12mod-user-import:3.8.02102489612876888128
mod-sender12mod-sender:1.11.02102489612876888128
edge-oai-pmh15edge-oai-pmh:2.7.121512136010241440384512
mod-data-export-worker15mod-data-export-worker:3.1.223072280010242048384512
mod-rtac12mod-rtac:3.5.02102489612876888128
mod-task-list7mod-task-list:1.9.22102489612876888128
mod-circulation-storage20mod-circulation-storage:17.1.742880259215361814384512
mod-calendar13mod-calendar:2.5.02102489612876888128
mod-source-record-storage21mod-source-record-storage:5.7.525600500020483500384512
mod-event-config12mod-event-config:2.6.02102489612876888128
mod-courses12mod-courses:1.4.82102489612876888128
mod-circulation-item9mod-circulation-item:1.0.02102489612876888128
mod-inventory19mod-inventory:20.1.642880259210241814384512
mod-email12mod-email:1.16.02102489612876888128
mod-circulation20mod-circulation:24.0.1142880259215361814384512
mod-pubsub16mod-pubsub:2.11.32153614401024922384512
mod-di-converter-storage17mod-di-converter-storage:2.1.52102489612876888128
edge-rtac15edge-rtac:2.6.22102489612876888128
edge-orders15edge-orders:2.9.12102489612876888128
mod-template-engine12mod-template-engine:1.19.12102489612876888128
mod-users17mod-users:19.2.24102489612876888128
mod-patron-blocks14mod-patron-blocks:1.9.021024896102476888128
mod-audit13mod-audit:2.8.02102489612876888128
edge-fqm13edge-fqm:1.0.12102489612876888128
mod-source-record-manager18mod-source-record-manager:3.7.725600500020483500384512
nginx-edge6nginx-edge:2023.06.1421024896128000
mod-quick-marc16mod-quick-marc:5.0.11228821761281664384512
nginx-okapi9nginx-okapi:2023.06.14210248961536000
okapi-b8okapi:5.1.23168414401536922384512
mod-feesfines12mod-feesfines:19.0.02102489612876888128
mod-invoice-storage13mod-invoice-storage:5.7.041872153610241024384512
edge-users6edge-users:1.2.02102489612876888128
mod-dcb9mod-dcb:1.0.02102489612876888128
mod-service-interaction15mod-service-interaction:3.0.22204818442561290384512
mod-data-export17mod-data-export:4.8.711024896102476888128
mod-patron12mod-patron:6.0.04102489612876888128
mod-oai-pmh16mod-oai-pmh:3.12.824096369020483076384512
edge-connexion12edge-connexion:1.1.12102489612876888128
mod-kb-ebsco-java12mod-kb-ebsco-java:4.0.02102489612876888128
mod-notes13mod-notes:5.1.021024896128952384512
mod-data-export-spring15mod-data-export-spring:3.0.21204818442561536384512
mod-login12mod-login:7.10.12144012981024768384512
mod-organizations-storage13mod-organizations-storage:4.6.04102489612876888128
pub-okapi6pub-okapi:2023.06.142102489612876800
edge-erm7edge-erm:1.0.02102489612876888128
mod-eusage-reports7mod-eusage-reports:2.0.02102489612876888128


Methodology/Approach

MOBIUS Tests: scenarios were started by JMeter script from load generator. We had 100% error count for AIE_TC: Create Invoices, AIE_TC: Invoices Approve, AIE_TC: Paying Invoices, TC: Receiving-an-Order-Line, Unreceiving-a-Piece and Unreceiving-a-Piece Workflows because data was not regenerated.  

Baseline MCPT Environment configuration according to tunning environment from previous report task count: 4 for services: mod-permissions, mod-search, mod-patron, mod-inventory, mod-inventory-storage, mod-circulation, mod-circulation-storage, mod-order, mod-order-storage, mod-invoice, mod-invoice-storage, for mod-users and mod-authtoken task count 6. Parameter srs.marcIndexers.delete.interval.seconds=86400 for mod-source-record-storage. Instance type: m6g.2xlargeInstances count: 14Database r6g.4xlargeAmazon OpenSearch Service  ptf-testr6g.2хlarge.search (4 nodes).

  • Test 1: The Baseline MCPT Environment configuration was applied, and CPU=0 was set for all modules,  Fixed Load (average case) MOBIUS test was run.
  • Test 2: The Baseline MCPT Environment configuration was applied, and CPU=0 was set for all modules,  Fixed Load (high load case) MOBIUS test was run.
  • Test 3: The Baseline MCPT Environment configuration was applied, and CPU=0 was set for all modules,  Fixed Load (average case) MOBIUS test was run (rerun Test 1).
  • Test 4: The Baseline MCPT Environment configuration was applied, and CPU=1 was set for all modules,  Fixed Load (average case) MOBIUS test was run.
  • Test 5: The Baseline MCPT Environment configuration was applied, and CPU=2 was set for all modules,  Check In\Check Out with 20 users for one tenant on 30 minutes test was run.
  • Test 6: The Baseline MCPT Environment configuration was applied, and CPU=2 was set for all modules,  Data Import - Create with 25k and 100k records files tests were run.
  • Test 7: The Baseline QCP1 Environment configuration was applied, and CPU=2 was set for all modules,  Check In\Check Out with 20 users for one tenant on 30 minutes test was run.
  • Test 8: The Baseline QCP1 Environment configuration was applied, and CPU=2 was set for all modules,  Data Import - Create with 25k and 100k records files tests were run.
  • Test 9: The Baseline QCP1 Environment configuration was applied, and CPU=0 was set for all modules,  Check In\Check Out with 20 users for one tenant on 30 minutes test was run.
  • Test 10: The Baseline QCP1 Environment configuration was applied, and CPU=0 was set for all modules,  Data Import - Create with 25k and 100k records files tests were run.