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 |