5. ArmoniK.Core performance tests with HtcMock

5.1. Machine setup

An AWS c5.12xlarge EC2 instance was used to perform the following tests with Amazon Linux 2 operating system.

Dependencies were installed using the following commands:

sudo yum install -y git docker yum-utils

# just
mkdir -p ~/bin
curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to ~/bin

# terraform
sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/AmazonLinux/hashicorp.repo
sudo yum -y install terraform

# docker
sudo systemctl enable docker.service
sudo systemctl start docker.service
sudo usermod -a -G docker ec2-user

5.2. HtcMock client build

just buildHtcmockClient

or

docker build -t dockerhubaneo/armonik_core_htcmock_test_client:0.0.0.0-test -f Tests/HtcMock/Client/src/Dockerfile .

5.3. Empty tasks and complex dependencies case

ArmoniK.Core infrastructure used:

  • Activemq

  • Redis

  • 1 partition

  • HtcMock worker

  • 30 compute plane instances

just worker=mock replicas=30 partitions=1 build-deploy

Once deployed, we do some warmup to put ArmoniK in its optimal state:

docker run --net armonik_network --rm \
    -e HtcMock__TotalCalculationTime=00:00:10 \
    -e HtcMock__NTasks=300 \
    -e HtcMock__SubTasksLevels=4 \
    -e HtcMock__EnableFastCompute=true \
    -e GrpcClient__Endpoint=http://armonik.control.submitter:1080\
    dockerhubaneo/armonik_core_htcmock_test_client:0.0.0.0-test

Then we run the actual test:

docker run --net armonik_network --rm \
    -e HtcMock__TotalCalculationTime=00:00:10 \
    -e HtcMock__NTasks=10000 \
    -e HtcMock__SubTasksLevels=100 \
    -e HtcMock__EnableFastCompute=true \
    -e GrpcClient__Endpoint=http://armonik.control.submitter:1080 \
    dockerhubaneo/armonik_core_htcmock_test_client:0.0.0.0-test

We execute this test several times and compute the average tasks throughput. See this script for the exact test process.

5.4. Useful git commands

Print SHA, described tag and commit message for merges on main branch for easier reference.

git log --format="%C(yellow)%h %C(cyan)%<(21)%(describe:tags) %Creset%s" --merges --first-parent main

5.5. Some throughput results in tasks per seconds

git rev-parse –short HEAD

git describe –tags

ActiveMQ / Redis

91f62cc2

0.20.2-5-g91f62cc2

595.0

d436763c

0.20.2-12-gd436763c

569.0

f41c9a2c

0.20.5-33-gf41c9a2c

575.2

4ea4db08

0.20.5-46-g4ea4db08

498.1

85d90c5b

0.20.5-91-g85d90c5b

494.7

968ca38

0.20.5-106-g968ca38e

491.6

2bcbe5c2

0.20.5-109-g2bcbe5c2

494.0

d67fd864

0.20.5-125-gd67fd864

558.7

2b8e9662

0.20.5-137-g2b8e9662

558.8

533ea6ba

0.20.5-168-g533ea6ba

569.8

4f250bbd

0.21.0

553.6

d1ac275f

0.22.0

556.8

40696cef

0.22.0-24-g40696cef

556.2

605de084

0.22.0-26-g605de084

551.9

4ea47675

0.22.0-28-g4ea47675

550.2

4a53e2eb

0.24.1-7-g4a53e2eb

547.7