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.108 0.000 0.037 0.107 0.108 0.108 18.622 0.106
No instrumentation past 0.109 0.000 0.073 0.108 0.108 0.109 58.246 0.105
Deactivated probe current 0.722 0.009 4.568 0.685 0.702 0.725 2915.149 0.653
Deactivated probe past 0.726 0.006 3.290 0.692 0.709 0.731 2521.539 0.648
No logging current 2.677 0.009 4.759 2.625 2.648 2.674 3038.416 2.558
No logging past 2.712 0.009 4.440 2.658 2.680 2.708 2634.337 2.591
Binary file current 4.792 0.028 14.163 3.486 4.400 4.682 13118.870 3.328
Binary file past 4.767 0.027 13.776 3.485 4.289 4.662 12433.680 3.082
Binary TCP current 6.690 0.020 10.274 6.496 6.776 6.974 6057.923 3.036
Binary TCP past 6.758 0.040 20.267 6.488 6.881 7.201 17990.019 3.038

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.622 0.000 0.212 1.537 1.618 1.708 25.395 1.417
No instrumentation past 4.293 0.001 0.411 4.113 4.184 4.560 93.964 4.043
Deactivated probe - A current 4.145 0.001 0.425 3.941 4.032 4.375 178.568 3.639
Deactivated probe - A past 9.664 0.017 8.506 9.270 9.331 10.024 7925.005 9.142
Deactivated probe - B current 4.075 0.001 0.435 3.827 4.038 4.265 143.530 3.551
Deactivated probe - B past 9.611 0.001 0.737 9.236 9.278 10.103 171.664 9.102
No logging - A current 167.275 0.009 4.697 165.458 165.955 166.567 357.652 162.935
No logging - A past 359.547 0.023 11.854 354.536 355.267 356.460 1633.187 351.026
No logging - B current 42.907 0.007 3.534 42.296 42.504 42.747 3110.818 41.334
No logging - B past 120.456 0.008 3.951 118.975 119.219 119.542 353.108 117.791
Text file - A current 1462.049 0.988 504.323 1397.360 1436.785 1513.521 125429.100 1369.500
Text file - A past 2252.870 1.681 857.740 2143.628 2196.198 2329.107 184179.880 2110.411
Text file - B current 1233.100 0.995 507.908 1178.536 1209.425 1275.289 231721.500 1152.743
Text file - B past 1931.931 1.410 719.589 1838.727 1904.462 1997.737 205058.311 1804.252
Binary TCP - A current 680.903 0.086 43.652 667.851 670.845 684.104 3741.810 393.578
Binary TCP - A past 1158.257 0.083 42.528 1144.187 1147.532 1167.071 7673.135 821.747
Binary TCP - B current 475.687 0.053 27.143 468.447 470.889 475.377 3605.263 231.064
Binary TCP - B past 846.369 0.078 39.779 832.406 835.264 853.683 3912.124 537.425

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.104 0.106 0.107 0.107 97.542 0.104
No instrumentation past 0.111 0.000 0.057 0.109 0.110 0.111 37.878 0.105
No logging current 6.696 0.025 12.610 6.558 6.590 6.628 6134.950 6.434
No logging past 6.055 0.026 13.479 5.903 5.944 5.990 6984.382 5.744
Zipkin current 9.737 0.023 11.709 9.123 9.183 9.259 3291.283 8.025
Zipkin past 10.198 0.024 12.478 9.468 9.524 9.598 4321.535 8.928

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.163 0.016 8.221 36.785 40.286 40.620 392.867 35.311
No instrumentation past 39.651 0.015 7.611 38.122 38.821 40.740 917.565 35.490
Deactivated probe current 41.429 0.015 7.565 40.877 41.103 41.347 369.271 35.791
Deactivated probe past 40.797 0.015 7.702 40.305 40.608 40.888 367.026 35.577
No logging current 41.603 0.015 7.740 41.062 41.332 41.603 1440.157 35.983
No logging past 40.569 0.015 7.837 39.474 40.453 40.735 958.409 35.405
Zipkin current 40.917 0.015 7.752 40.405 40.660 40.934 1108.626 35.611
Zipkin past 41.053 0.015 7.665 39.329 41.090 41.381 456.683 35.967
Prometheus current 41.640 0.015 7.467 40.987 41.237 41.513 369.192 36.115
Prometheus past 41.078 0.015 7.750 40.615 40.941 41.212 750.611 35.921