[Poppy] List App with multiple workflows and R/W split enabled test report

Overview

This document contains the results of testing List App refreshing of 200k records with multiple parallel workflows (Check-in/Check-out and Data import) and R/W split enabled in the Poppy release. The goal of testing is to assess the performance of mod-lists along with other workflows (CICO and DI) and R/W split enabled  and to measure mod-lists' impact on other modules

Ticket:

PERF-708 - Getting issue details... STATUS

Summary

  • Load tests showed that average List App refresh duration in multiple-workflow test with R/W split enabled is 11.4 min.
  • ListApp duration while testing separately is 3.9 minutes less (7.5 min).
  • ListApp duration while testing with other workflows but with R/W split disabled is 6.3 minutes more (17.7 min).
  • According to the results, maximum CPU utilization for DI+CICO test is about 126%, while with ListApp scenario added CPU reaches 150%.
  • CPU utilization of mod-lists and mod-fqm-manager for ListApp+DI+CICO test is up to 140% with R/W split enabled, while it reaches only 105% with R/W split disabled. 
  • RDS CPU utilization (writer instance) is about 96%  for DI+CICO test and it doesn't increase with ListApp scenario added. RDS CPU utilization for reader instance reaches 95% during ListApp+DI+CICO test.
  • RDS CPU utilization for ListApp+DI+CICO (writer instance) didn't change in comparison with the same test but with R/W split disabled for mod-fqm-manager.
  • No memory leak is suspected of all the modules.

Test runs

Query used in lists - "Item status != Available". List refresh result is 200K records.

Scenario

Data quantity

List App + Check-in/Check-out + Data Import Create*

ListApp - 10 users

CICO - 20 users

DI - 25k

 Check-in/Check-out + Data import*

CICO - 20 users

DI - 25k

List AppListApp - 10 users

*PTF Create 2 job was used for DI scenario

Results

TransactionDuration
 R/W split disabled* R/W split enabled**

Testing separately

(ListApp and DI+CICO)



Testing in parallel


Testing separately

(ListApp and DI+CICO)

Testing in parallel

ListApp refresh, avg8.5 min17.7 min7.5 min (-1 min)11.4 min (-6.3 min)
Check-in, avg1.173 sec1.290 sec0.992 (-0.181 sec)1.087 (-0.203 sec)
Check-out, avg1.648 sec1.948 sec1.634 (-0.014 sec)1.765 (-0.183 sec)
DI Create 25k 18 min22 min13 min (-5 min)15 min (-7 min)

* Query used in lists - "Item status == Checked out". List refresh result is 200K records. Results are taken from previous test report: [Poppy] List App with multiple workflows and R/W split disabled test report

**Query used in lists - "Item status != Available". List refresh result is about 200K records.

Grafana results

DI + CICO

ListApp + DI + CICO

Service CPU Utilization

According to the results, maximum CPU utilization for DI+CICO test is about 126%, while with ListApp scenario added CPU reaches 150%.

CPU utilization of mod-lists and mod-fqm-manager for ListApp+DI+CICO test is up to 140% with R/W split enabled, while it reaches only 105% with R/W split disabled. 

ListApp

DI + CICO

ListApp + DI + CICO


ListApp + DI + CICO with R/W split disabled*

service_cpu_parallel_2.png

*Results are taken from the previous report: [Poppy] List App with multiple workflows and R/W split disabled test report.

Memory Utilization

No memory leaks were found during the tests.

ListApp

DI + CICO

ListApp + DI + CICO


DB CPU Utilization

RDS CPU utilization (writer instance) is about 96% for DI+CICO test and it doesn't increase with ListApp scenario added. RDS CPU utilization for reader instance reaches 95% during ListApp+DI+CICO test.

RDS CPU utilization for ListApp+DI+CICO (writer instance) didn't change in comparison with the same test but with R/W split disabled for mod-fqm-manager.

ListApp

DI + CICO

ListApp + DI + CICO


ListApp + DI + CICO with R/W split disabled*

db_cpu_parallel.png

*Results are taken from the previous report: [Poppy] List App with multiple workflows and R/W split disabled test report.


DB Connections

ListApp

DI + CICO

ListApp + DI + CICO

DB Load

ListApp

Reader instance

Writer instance

DI + CICO

Writer instance

ListApp + DI + CICO

Reader instance

Writer instance


Appendix

Infrastructure

PTF -environment pcp1

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

    NameAPI NameMemory GIBvCPUsmax_connections
    R6G Extra Largedb.r6g.xlarge32 GiB4 vCPUs2731
  • MSK tenant
    • 4 m5.2xlarge brokers in 2 zones
    • Apache Kafka version 2.8.0

    • EBS storage volume per broker 300 GiB

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


Module
pcp1-pvt

Task Def. Revision

Task Count

Mem Hard Limit

Mem Soft limit

CPU units

Xmx

MetaspaceSize

MaxMetaspaceSize

R/W split enabled

mod-inventory-storage:27.0.01024096369020483076384512false
mod-users:19.2.0192102489612876888128false
nginx-okapi:2023.06.14821024896128000false
mod-circulation-storage:17.1.01022880259215361814384512false
okapi:5.1.193168414401024922384512false
mod-inventory:20.1.0922880259210241814384512false
mod-circulation:24.0.01022880259215361814384512false
pub-okapi:2023.06.1482102489612876800false
mod-fqm-manager:1.0.052102489612876888128true
mod-lists:1.0.052300026001282048384512false


Additional info

Grafana graphs:

List App + Check-in/Check-out + Data Import Create

http://carrier-io.int.folio.ebsco.com/grafana/d/elIt9zCnz/jmeter-performance-with-average-latency?orgId=1&var-percentile=95&var-test_type=baseline&var-test=circulation_checkInCheckOut_Poppy_2&var-env=int&var-grouping=1s&var-low_limit=250&var-high_limit=750&var-db_name=jmeter&var-sampler_type=All&var-Request=All&from=1699353475555&to=1699354950119

Check-in/Check-out + Data import

http://carrier-io.int.folio.ebsco.com/grafana/d/elIt9zCnz/jmeter-performance-with-average-latency?orgId=1&var-percentile=95&var-test_type=baseline&var-test=circulation_checkInCheckOut_Poppy_2&var-env=int&var-grouping=1s&var-low_limit=250&var-high_limit=750&var-db_name=jmeter&var-sampler_type=All&var-Request=All&from=1699290758840&to=1699291480510


Methodology

  1. Enable R/W split for mod-fqm-manager.
  2. Create 10 lists with the query "Item status != Available" on each of three tenants to be able to run a test for up to 30 concurrent lists.
  3. Prepare 200K item records for the query to return. Details can be found at the link: Steps for testing process#ListApp
  4. Conduct test with ListApp scenario

  5. Conduct test with ListApp scenario + CICO + DI

  6. Conduct test withCICO + DI scenarios

  7. Compare the results