Performance Benchmarks

On this page, we collect performance benchmarks of Kieker monitoring and other instrumentation frameworks, such as OpenTelemetry and inspectIT, for comparison utilizing MooBench.

Details of the comparison of OpenTelemetry, inspectIT and Kieker can be
found in https://oceanrep.geomar.de/id/eprint/55367/1/SSP2021overhead.pdf

Kieker 4 Java – Monitoring

These are the performance benchmark results for Kieker 4 Java probes utilizing different writer back end.

  • No instrumentation serves as a baseline value indicating how much execution time can be contributed to the benchmark program itself.
  • Deactivated probe as above, but with woven in probes that do not produce any output and do not aggregate information.
  • No logging are activated probes, but the collected data is not send utilizing a null writer.
  • Text File utilizes the text file logging. This is usually slow, as data is written in text files.
  • Binary File utilizes the binary file logging without compression.
  • Binary TCP utilizes a TCP connection to send the monitoring data to a logging service.
setup run mean ci sd 1.quartile median 3.quartile min max
No instrumentation current 0.115 0.000 0.034 0.110 0.118 0.120 10.060 0.108
No instrumentation past 0.108 0.000 0.042 0.105 0.107 0.109 17.487 0.103
Deactivated probe current 0.723 0.007 3.448 0.686 0.705 0.727 2468.613 0.652
Deactivated probe past 0.733 0.006 3.234 0.700 0.717 0.737 2422.522 0.661
No logging current 2.722 0.009 4.605 2.671 2.691 2.715 2787.609 2.600
No logging past 2.711 0.009 4.829 2.659 2.680 2.708 2783.698 2.588
Binary file current 4.327 0.032 16.098 3.330 3.938 4.421 15020.550 2.921
Binary file past 4.694 0.026 13.407 3.449 4.128 4.645 10900.478 2.996
Binary TCP current 6.625 0.011 5.637 6.391 6.759 6.929 2748.693 3.010
Binary TCP past 6.711 0.014 7.223 6.426 6.785 7.079 5223.538 3.015

Kieker 4 Python – Monitoring

Kieker 4 Python is the reimplementation of the probe and monitoring side of Kieker addressing programs written in Python. Here we also want to know how well certain parts perform.

  • No instrumentation is the baseline execution time of the benchmark program.
  • Deactivated probe is the execution time with integrated probes, but these are deactivated.
  • No logging is with active probes, but with a null writer.
  • Text File is with an activated probe logging to a text file.
  • Binary TCP is with an activated probe logging to a remote logging server.

Each of these setups, except of no instrumentation, are tested utilizing two different probe introduction methods (here labeled A and B).

setup run mean ci sd 1.quartile median 3.quartile min max
No instrumentation current 1.710 0.000 0.241 1.691 1.710 1.725 101.622 1.425
No instrumentation past 1.644 0.000 0.235 1.560 1.657 1.698 87.760 1.448
Deactivated probe - A current 4.085 0.001 0.382 3.891 3.982 4.325 66.256 3.546
Deactivated probe - A past 4.212 0.001 0.425 3.984 4.111 4.421 122.850 3.723
Deactivated probe - B current 4.100 0.001 0.386 3.901 4.020 4.333 40.668 3.589
Deactivated probe - B past 4.105 0.001 0.420 3.882 4.041 4.286 121.371 3.643
No logging - A current 166.945 0.009 4.358 165.382 165.890 166.484 380.098 162.894
No logging - A past 168.743 0.010 5.119 167.025 167.515 168.110 1299.540 164.573
No logging - B current 42.341 0.003 1.536 41.938 42.130 42.341 570.655 41.022
No logging - B past 42.719 0.006 2.887 42.129 42.335 42.578 1340.214 41.118
Text file - A current 1470.032 1.019 519.717 1403.585 1447.334 1520.432 135547.000 1372.789
Text file - A past 1470.055 1.137 580.362 1403.794 1444.251 1520.641 156952.632 1374.422
Text file - B current 1238.400 1.255 640.462 1182.965 1219.691 1280.683 281412.000 1157.255
Text file - B past 1233.588 1.225 625.174 1179.635 1207.532 1275.568 284513.427 1152.681
Binary TCP - A current 683.414 0.052 26.590 675.308 677.895 684.623 3479.964 401.424
Binary TCP - A past 686.876 0.064 32.539 675.655 678.633 692.129 4027.010 395.437
Binary TCP - B current 472.612 0.040 20.537 466.122 468.449 472.420 2813.489 234.085
Binary TCP - B past 472.865 0.046 23.705 465.861 468.348 472.676 3538.847 233.523

OpenTelemetry

OpenTelemetry (https://opentelemetry.io/) is a widely used monitoring tool, compatible with many programming languages. MooBench measures the overhead of OpenTelemetry using the following configurations:

  • No instrumentation is the baseline execution time of the benchmark program.
  • No Logging measures the execution time of the benchmark program with OpenTelemetry instrumentation, but without measuring or
    logging anything.
  • Logging measures the execution time of the benchmark program with OpenTelemetry instrumentation and writing every output to the standard output.
  • Zipkin measures the execution time of the benchmark program with obtaining every method invocation and sending them to a local Zipkin instance.
  • Prometheus measures the execution time of the benchmark program with obtaining only aggregated execution times, which are stored by a local Prometheus instance.
setup run mean ci sd 1.quartile median 3.quartile min max
No instrumentation current 0.107 0.000 0.030 0.106 0.107 0.107 10.069 0.104
No instrumentation past 0.107 0.000 0.043 0.106 0.106 0.108 19.089 0.101
No logging current 6.851 0.025 12.673 6.696 6.734 6.777 6254.285 6.541
No logging past 6.668 0.026 13.057 6.519 6.554 6.596 6262.016 6.359
Zipkin current 11.447 0.025 12.609 10.508 10.652 10.834 3348.649 10.093
Zipkin past 10.020 0.050 25.440 9.463 9.518 9.586 22172.802 8.508

InspectIT

InspectIT (https://www.inspectit.rocks/) is a widely used monitoring tool, which is allows to trace the execution of Java programs. MooBench
measures the overhead of InspectIT using the following configurations:

  • No instrumentation is the baseline execution time of the benchmark program.
  • Deactivated processing measures the execution time of the benchmark program with inspectIT instrumentation, but without measuring or logging
    anything.
  • No Logging measures the execution time of the benchmark program with inspectIT instrumentation and just discarding the measurement results.
  • Zipkin measures the execution time of the benchmark program with obtaining every method invocation and sending them to a local Zipkin instance.
  • Prometheus measures the execution time of the benchmark program with obtaining only aggregated execution times, which are stored by a local Prometheus instance.
setup run mean ci sd 1.quartile median 3.quartile min max
No instrumentation current 40.510 0.016 8.288 37.485 40.885 41.317 1944.095 36.192
No instrumentation past 39.363 0.015 7.674 36.851 39.213 40.278 897.940 35.054
Deactivated probe current 40.600 0.015 7.883 37.493 40.903 41.225 493.197 35.939
Deactivated probe past 40.502 0.015 7.873 39.685 40.277 40.558 891.489 35.253
No logging current 40.760 0.015 7.552 40.286 40.552 40.810 361.612 35.486
No logging past 40.182 0.020 10.321 38.296 40.220 40.511 5528.772 35.307
Zipkin current 41.459 0.015 7.492 40.794 41.017 41.257 354.361 35.842
Zipkin past 39.851 0.015 7.844 38.103 39.899 40.170 550.621 34.962
Prometheus current 40.968 0.015 7.773 40.659 40.999 41.256 705.371 35.847
Prometheus past 40.585 0.015 7.654 39.927 40.193 40.472 395.900 35.105