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.104 0.000 0.034 0.103 0.103 0.104 8.192 0.099
No instrumentation past 0.109 0.000 0.034 0.107 0.109 0.110 11.607 0.104
Deactivated probe current 0.591 0.006 3.300 0.563 0.576 0.592 2453.907 0.535
Deactivated probe past 0.597 0.010 4.967 0.565 0.578 0.593 4111.271 0.543
No logging current 3.232 0.010 4.905 3.171 3.193 3.220 2514.374 3.088
No logging past 2.972 0.009 4.508 2.919 2.936 2.955 2429.059 2.869
Binary file current 7.742 0.468 238.937 3.279 3.848 4.368 138056.000 3.158
Binary file past 7.093 1.419 724.246 3.528 4.225 4.703 564958.554 3.118
Binary TCP current 7.122 0.093 47.692 7.017 7.256 7.451 47401.900 3.167
Binary TCP past 6.906 0.037 18.965 6.585 6.998 7.371 17480.947 3.087

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 4.235 0.001 0.388 4.078 4.093 4.518 42.729 4.017
No instrumentation past 4.414 0.001 0.439 4.181 4.415 4.637 109.810 4.094
Deactivated probe - A current 9.802 0.001 0.739 9.283 9.360 10.319 56.430 9.162
Deactivated probe - A past 9.557 0.063 31.908 9.157 9.213 10.024 31387.807 9.017
Deactivated probe - B current 9.720 0.002 0.773 9.318 9.360 10.341 188.890 9.185
Deactivated probe - B past 9.577 0.001 0.709 9.197 9.242 10.073 125.522 9.058
No logging - A current 359.894 0.023 11.666 354.985 355.699 356.813 761.336 351.408
No logging - A past 358.323 0.020 10.021 354.502 355.223 356.241 1587.188 351.057
No logging - B current 119.982 0.008 4.222 118.239 118.508 118.866 325.473 116.980
No logging - B past 119.935 0.007 3.684 118.634 118.865 119.176 472.215 117.508
Text file - A current 2257.229 1.703 868.934 2148.528 2192.423 2333.895 206143.200 2115.293
Text file - A past 2232.790 1.527 778.989 2124.837 2198.580 2310.435 160802.710 2091.704
Text file - B current 1928.421 1.336 681.650 1838.922 1878.157 1997.888 192529.300 1804.665
Text file - B past 1925.116 1.264 644.690 1835.118 1878.839 1993.458 178405.610 1804.250
Binary TCP - A current 1168.400 0.075 38.362 1155.077 1158.401 1177.697 3540.205 837.724
Binary TCP - A past 1146.896 0.093 47.598 1132.999 1136.308 1156.047 19384.088 810.390
Binary TCP - B current 850.393 0.081 41.183 835.244 837.934 858.125 3910.014 544.160
Binary TCP - B past 834.901 0.081 41.485 822.804 825.759 840.187 3920.542 524.739

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.105 0.000 0.036 0.105 0.105 0.105 8.808 0.101
No instrumentation past 0.113 0.000 0.036 0.112 0.112 0.113 10.852 0.108
No logging current 6.157 0.015 7.682 6.016 6.048 6.088 3281.673 5.838
No logging past 6.532 0.017 8.692 6.375 6.415 6.460 2978.634 6.161
Zipkin current 9.664 0.025 12.867 9.056 9.109 9.179 5439.646 8.813
Zipkin past 9.933 0.025 12.679 9.244 9.326 9.435 5559.882 8.085

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 36.300 0.015 7.412 34.276 34.589 37.920 349.675 33.201
No instrumentation past 37.506 0.015 7.400 34.798 38.095 38.431 314.002 33.301
Deactivated probe current 45.525 0.040 20.586 44.870 45.154 45.444 10041.820 39.902
Deactivated probe past 45.073 0.036 18.585 44.231 44.499 44.795 12425.838 39.134
No logging current 73.288 0.072 36.737 71.140 71.495 71.973 19602.350 69.440
No logging past 75.242 0.053 27.150 73.113 73.442 73.906 11936.146 67.970
Zipkin current 73.783 0.295 150.328 64.394 69.581 70.429 73970.510 62.164
Zipkin past 73.748 0.251 127.873 65.068 69.153 71.324 81681.213 62.981
Prometheus current 52.528 0.027 13.937 51.373 51.656 51.991 8674.717 45.640
Prometheus past 52.921 0.026 13.221 51.932 52.219 52.548 5784.563 46.227