Kestra delivered middle-of-the-pack performance — relatively stable for long-running tasks, but slower than competitors in lightweight workloads. While more modern than Airflow and Prefect, it falls short of the orchestration efficiency seen in Temporal, Hatchet, or Windmill.
The flow we used to run the benchmarks is the following:
Python
JavaScript
id: benchmark namespace: company.team inputs: -id: n type: INT -id: iters type: INT tasks: -id: processIterations type: io.kestra.plugin.core.flow.ForEach values:'{{ range(0, inputs.iters - 1) }}' concurrencyLimit:1 tasks: -id: python type: io.kestra.plugin.scripts.python.Script containerImage: python:slim taskRunner: type: io.kestra.plugin.core.runner.Process script:| def fibo(n:int): if n <= 1: return n else: return fibo(n - 1) + fibo(n - 2) print(str(fibo({{ inputs.n }})))
id: benchmark_js namespace: company.team inputs: -id: n type: INT -id: iters type: INT tasks: -id: processIterations type: io.kestra.plugin.core.flow.ForEach values:'{{ range(0, inputs.iters - 1) }}' concurrencyLimit:1 tasks: -id: script type: io.kestra.plugin.scripts.node.Script taskRunner: type: io.kestra.plugin.core.runner.Process script:| function fibo(n) { if (n <= 1) { return n } else { return fibo(n-1) + fibo(n-2) } } console.log(fibo({{ inputs.n }}))
We executed it once with n=33, iters=10 and once with n=10 and iters=40. Note that we set the concurrency limit to 1 meaning all task will run sequentially on one worker. Furthermore, no extra python dependencies had to be installed during the execution of those flows, , and we use a Process task runner to avoid starting a Docker container for each task execution.
Fibonacci 40 iterations, n=10
This benchmark measures the performance of Kestra when handling a large number of lightweight tasks. The tasks are Fibonacci calculations with 40 iterations and a base value of 10.
Python
Visualization
Statistics
Kestra
Windmill
Windmill Dedicated
Total duration (in seconds)
6.044
4.383
2.092
Assignment
2.679 (44.32%)
1.836 (41.89%)
1.795 (85.80%)
Execution
1.499 (24.80%)
2.215 (50.54%)
0.122 (5.83%)
Transition
1.866 (30.87%)
0.332 (7.57%)
0.175 (8.37%)
Timing details
View task timing details
Task
Created at
Started at
Completed at
task_00
0.000
0.931
0.966
task_01
1.007
1.037
1.073
task_02
1.108
1.142
1.175
task_03
1.220
1.246
1.286
task_04
1.316
1.376
1.415
task_05
1.437
1.485
1.523
task_06
1.575
1.617
1.653
task_07
1.674
1.697
1.735
task_08
1.793
1.853
1.891
task_09
1.924
1.984
2.018
task_10
2.046
2.064
2.105
task_11
2.155
2.220
2.258
task_12
2.304
2.353
2.390
task_13
2.450
2.510
2.550
task_14
2.589
2.620
2.664
task_15
2.702
2.754
2.789
task_16
2.840
2.886
2.922
task_17
2.978
3.017
3.053
task_18
3.104
3.149
3.184
task_19
3.259
3.307
3.344
task_20
3.403
3.438
3.473
task_21
3.548
3.596
3.634
task_22
3.662
3.702
3.737
task_23
3.790
3.835
3.871
task_24
3.937
3.992
4.033
task_25
4.102
4.152
4.190
task_26
4.244
4.310
4.345
task_27
4.412
4.469
4.505
task_28
4.589
4.654
4.692
task_29
4.752
4.811
4.844
task_30
4.915
4.942
4.986
task_31
5.048
5.074
5.110
task_32
5.137
5.180
5.217
task_33
5.270
5.311
5.349
task_34
5.381
5.418
5.459
task_35
5.490
5.525
5.566
task_36
5.608
5.658
5.696
task_37
5.730
5.765
5.804
task_38
5.843
5.900
5.936
task_39
5.965
6.006
6.044
Windmill Comparison
Task
Created at
Started at
Completed at
task_00
0.000
0.003
0.059
task_01
0.067
0.113
0.171
task_02
0.180
0.226
0.280
task_03
0.290
0.335
0.389
task_04
0.398
0.446
0.501
task_05
0.510
0.558
0.614
task_06
0.622
0.669
0.725
task_07
0.732
0.780
0.834
task_08
0.842
0.889
0.942
task_09
0.950
0.997
1.052
task_10
1.061
1.108
1.166
task_11
1.175
1.220
1.274
task_12
1.283
1.330
1.385
task_13
1.394
1.440
1.494
task_14
1.503
1.550
1.605
task_15
1.612
1.661
1.716
task_16
1.723
1.770
1.823
task_17
1.831
1.878
1.930
task_18
1.939
1.986
2.041
task_19
2.049
2.096
2.152
task_20
2.161
2.209
2.266
task_21
2.274
2.320
2.376
task_22
2.384
2.431
2.486
task_23
2.495
2.542
2.596
task_24
2.604
2.652
2.706
task_25
2.715
2.761
2.816
task_26
2.825
2.872
2.925
task_27
2.933
2.979
3.033
task_28
3.042
3.090
3.145
task_29
3.154
3.201
3.269
task_30
3.278
3.325
3.382
task_31
3.391
3.437
3.493
task_32
3.501
3.548
3.602
task_33
3.611
3.660
3.715
task_34
3.723
3.770
3.823
task_35
3.833
3.879
3.934
task_36
3.942
3.990
4.045
task_37
4.053
4.101
4.157
task_38
4.165
4.212
4.268
task_39
4.277
4.324
4.383
Windmill Dedicated Comparison
Task
Created at
Started at
Completed at
task_00
0.000
0.019
0.022
task_01
0.029
0.073
0.077
task_02
0.081
0.125
0.128
task_03
0.134
0.179
0.182
task_04
0.187
0.231
0.234
task_05
0.239
0.284
0.287
task_06
0.292
0.338
0.341
task_07
0.345
0.391
0.394
task_08
0.398
0.444
0.447
task_09
0.451
0.497
0.500
task_10
0.505
0.549
0.552
task_11
0.557
0.603
0.606
task_12
0.610
0.655
0.659
task_13
0.663
0.709
0.712
task_14
0.716
0.761
0.764
task_15
0.768
0.814
0.817
task_16
0.821
0.867
0.870
task_17
0.876
0.921
0.924
task_18
0.929
0.973
0.976
task_19
0.981
1.027
1.030
task_20
1.035
1.080
1.083
task_21
1.087
1.132
1.135
task_22
1.139
1.186
1.189
task_23
1.193
1.238
1.241
task_24
1.246
1.292
1.295
task_25
1.299
1.345
1.348
task_26
1.352
1.398
1.401
task_27
1.405
1.451
1.454
task_28
1.458
1.504
1.507
task_29
1.512
1.557
1.560
task_30
1.564
1.611
1.614
task_31
1.618
1.664
1.667
task_32
1.671
1.717
1.720
task_33
1.724
1.770
1.773
task_34
1.777
1.823
1.826
task_35
1.830
1.876
1.879
task_36
1.884
1.930
1.933
task_37
1.937
1.983
1.986
task_38
1.991
2.036
2.039
task_39
2.043
2.089
2.092
Javascript
Visualization
Statistics
Kestra
Windmill
Windmill Dedicated
Total duration (in seconds)
9.050
2.973
2.125
Assignment
2.777 (30.69%)
1.427 (48.00%)
1.786 (84.05%)
Execution
4.633 (51.19%)
0.289 (9.72%)
0.126 (5.93%)
Transition
1.640 (18.12%)
1.257 (42.28%)
0.213 (10.02%)
Timing details
View task timing details
Task
Created at
Started at
Completed at
task_00
0.000
0.932
1.042
task_01
1.082
1.139
1.248
task_02
1.307
1.346
1.458
task_03
1.504
1.553
1.667
task_04
1.698
1.735
1.846
task_05
1.875
1.917
2.026
task_06
2.065
2.124
2.237
task_07
2.260
2.281
2.394
task_08
2.414
2.463
2.580
task_09
2.607
2.671
2.789
task_10
2.817
2.853
2.968
task_11
3.006
3.035
3.145
task_12
3.183
3.243
3.358
task_13
3.407
3.450
3.563
task_14
3.601
3.632
3.745
task_15
3.785
3.816
3.928
task_16
3.980
4.024
4.144
task_17
4.191
4.258
4.371
task_18
4.421
4.468
4.576
task_19
4.616
4.650
4.765
task_20
4.813
4.860
4.970
task_21
5.000
5.068
5.219
task_22
5.259
5.305
5.438
task_23
5.476
5.542
5.658
task_24
5.693
5.751
5.862
task_25
5.897
5.933
6.047
task_26
6.102
6.141
6.253
task_27
6.286
6.324
6.439
task_28
6.476
6.507
6.630
task_29
6.670
6.715
6.836
task_30
6.893
6.950
7.061
task_31
7.105
7.163
7.280
task_32
7.314
7.371
7.496
task_33
7.546
7.608
7.723
task_34
7.785
7.842
7.960
task_35
8.027
8.077
8.195
task_36
8.244
8.285
8.401
task_37
8.440
8.493
8.609
task_38
8.676
8.727
8.843
task_39
8.889
8.935
9.050
Windmill Comparison
Task
Created at
Started at
Completed at
task_00
0.000
0.006
0.014
task_01
0.051
0.074
0.081
task_02
0.105
0.155
0.163
task_03
0.184
0.222
0.229
task_04
0.239
0.286
0.294
task_05
0.330
0.364
0.372
task_06
0.411
0.447
0.455
task_07
0.493
0.528
0.536
task_08
0.573
0.610
0.617
task_09
0.655
0.689
0.693
task_10
0.705
0.751
0.759
task_11
0.797
0.832
0.840
task_12
0.876
0.911
0.918
task_13
0.957
0.989
0.993
task_14
1.004
1.051
1.058
task_15
1.098
1.133
1.141
task_16
1.167
1.214
1.222
task_17
1.247
1.283
1.291
task_18
1.313
1.351
1.358
task_19
1.394
1.416
1.424
task_20
1.469
1.480
1.487
task_21
1.513
1.560
1.568
task_22
1.580
1.625
1.632
task_23
1.669
1.704
1.712
task_24
1.751
1.787
1.791
task_25
1.801
1.848
1.855
task_26
1.894
1.929
1.936
task_27
1.976
2.012
2.019
task_28
2.057
2.092
2.099
task_29
2.138
2.174
2.182
task_30
2.222
2.256
2.263
task_31
2.304
2.336
2.344
task_32
2.386
2.420
2.428
task_33
2.467
2.503
2.511
task_34
2.548
2.583
2.591
task_35
2.629
2.666
2.673
task_36
2.712
2.746
2.754
task_37
2.796
2.825
2.832
task_38
2.869
2.903
2.908
task_39
2.920
2.966
2.973
Windmill Dedicated Comparison
Task
Created at
Started at
Completed at
task_00
0.022
0.053
0.057
task_01
0.061
0.105
0.109
task_02
0.113
0.158
0.161
task_03
0.166
0.212
0.215
task_04
0.221
0.266
0.270
task_05
0.275
0.318
0.321
task_06
0.326
0.372
0.375
task_07
0.380
0.424
0.427
task_08
0.433
0.477
0.480
task_09
0.485
0.531
0.534
task_10
0.538
0.584
0.588
task_11
0.592
0.637
0.640
task_12
0.645
0.690
0.693
task_13
0.698
0.743
0.746
task_14
0.751
0.796
0.799
task_15
0.804
0.849
0.852
task_16
0.857
0.902
0.905
task_17
0.910
0.956
0.959
task_18
0.964
1.009
1.012
task_19
1.016
1.061
1.064
task_20
1.069
1.113
1.116
task_21
1.122
1.166
1.169
task_22
1.174
1.220
1.223
task_23
1.228
1.273
1.276
task_24
1.281
1.325
1.328
task_25
1.332
1.378
1.381
task_26
1.385
1.430
1.433
task_27
1.439
1.484
1.487
task_28
1.492
1.537
1.540
task_29
1.544
1.589
1.593
task_30
1.597
1.643
1.646
task_31
1.650
1.695
1.698
task_32
1.704
1.747
1.750
task_33
1.756
1.800
1.804
task_34
1.809
1.853
1.856
task_35
1.861
1.906
1.909
task_36
1.914
1.960
1.963
task_37
1.967
2.014
2.017
task_38
2.023
2.068
2.071
task_39
2.076
2.122
2.125
Fibonacci 10 iterations, n=33
This benchmark measures the performance of Kestra when handling a large number of lightweight tasks. The tasks are Fibonacci calculations with 10 iterations and a base value of 33.