Back to Workflow Core

Performance Test

docs/performance.md

3.17.06.4 KB
Original Source

Performance Test

Workflow-core version 3.7.0 was put under test to evaluate its performance. The setup used was single node with the default MemoryPersistenceProvider persistence provider.

Methodology

  • Test Environment - Test were run on following two environments one after the other to see how workflow-core performance with a lower vs higher hardware configuration.

    • Lower configuration
      • Cores: 8 vCPU (Standard_D8s_v3)
      • RAM: 32 GB
      • OS: Linux Ubuntu 20.04
      • dotNet 6
    • Higher configuration
  • Test Workflow: Workflow consist of 3 basic steps. These 3 simple steps were chosen to test the performance of the workflow engine with minimal yet sufficient complexity and to avoid any external dependencies.

    • Step1 : Generate a random number between 1 to 10 and print it on standard output.
    • Step2 : Conditional step
      • Step 2.1: If value generate in step1 is > 5 then print it on standard output.
      • Step 2.2: If value generate in step1 is <= 5 then print it on standard output.
    • Step3: Prints a good bye message on standard output.
  • Test tools:

    • NBomber was used as performance testing framework with C# console app as base.
  • Test scenarios:

    • Each type of test run executed for 20 minutes.
    • NBomber Load Simulation of type KeepConstant copies was used. This type of simulation keep a constant amount of Scenario copies(instances) for a specific period.
    • Concurrent copies [1,2,3,4,5,6,7,8,10,12,14,16,32,64,128,256,512,1024] were tested.
      • For example if we take Concurrent copies=4 and Duration=20 minutes this means that NBomber will ensure that we have 4 instance of Test Workflow running in parallel for 20 minutes.

Results

  • Workflow per seconds - Below tables shows how many workflows we are able to execute per second on two different environment with increasing number of concurrent copies.
Concurrent Copies8 vCPU32 vCPU
1300.6504.7
2310.3513.1
3309.6519.3
4314.7521.3
5312.4519.0
6314.7517.7
7318.9516.7
8318.4517.5
10322.6517.1
12319.7517.6
14322.4518.1
16327.0515.5
32327.7515.8
64330.7523.7
128332.8526.9
256332.8529.1
512332.8529.1
1024341.3529.1

  • Latency - Shows Mean, P99 and P50 latency in milliseconds on two different environment with increasing number of concurrent copies.
Concurrent CopiesMean 8 vCPUMean 32 vCPUP.99 8 vCPUP.99 32 vCPUP.50 8 vCPUP.50 32 vCPU
13.321.9812.672.493.131.85
26.433.8919.965.676.173.65
39.675.7724.968.29.145.46
412.77.7627.4413.5712.027.22
515.999.6334.5941.8915.149.08
619.0511.5838.6945.9218.0210.93
721.9413.5442.1848.920.7212.66
825.1115.4544.3551.0423.9214.54
1030.9819.3352.2956.6429.3118.21
1237.5223.1859.263.3335.4221.82
1443.4427.0167.3367.5841.2825.55
1648.9331.0372.0672.7746.1128.93
3297.6562.03130.05104.9694.9158.02
64193.53122.24235.14168.45191.49115.26
128384.63243.74449.79294.65379.65236.67
256769.13486.82834.07561.66766.46498.22
5121538.29968.021725.441052.671542.14962.05
10242999.361935.323219.462072.573086.341935.36

References