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 Observability Framework – Java
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 and getting more irrelevant in the performance benchmarks. The diagram below, therefore, does not show the results.
- 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 | max | min |
---|---|---|---|---|---|---|---|---|---|
No instrumentation | current | 0.105 | 0.000 | 0.031 | 0.105 | 0.105 | 0.105 | 8.412 | 0.101 |
No instrumentation | past | 0.110 | 0.000 | 0.042 | 0.108 | 0.111 | 0.111 | 18.358 | 0.105 |
Deactivated probe | current | 0.746 | 0.007 | 3.703 | 0.712 | 0.730 | 0.750 | 2716.710 | 0.662 |
Deactivated probe | past | 0.734 | 0.007 | 3.496 | 0.701 | 0.718 | 0.737 | 2703.090 | 0.662 |
No logging | current | 2.720 | 0.011 | 5.574 | 2.665 | 2.688 | 2.716 | 2977.598 | 2.585 |
No logging | past | 2.757 | 0.009 | 4.666 | 2.705 | 2.730 | 2.756 | 2879.569 | 2.623 |
Binary file | current | 5.118 | 0.018 | 9.359 | 3.633 | 4.426 | 4.948 | 6851.533 | 3.133 |
Binary file | past | 5.079 | 0.020 | 10.002 | 3.542 | 4.391 | 5.097 | 7765.298 | 3.082 |
Binary TCP | current | 6.929 | 0.011 | 5.412 | 6.686 | 6.905 | 7.118 | 2597.294 | 3.344 |
Binary TCP | past | 6.693 | 0.023 | 11.538 | 6.326 | 6.864 | 7.119 | 9673.183 | 3.125 |
Kieker Observability Framework – Python
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 | max | min |
---|---|---|---|---|---|---|---|---|---|
No instrumentation | current | 1.595 | 0.000 | 0.213 | 1.483 | 1.582 | 1.661 | 24.341 | 1.428 |
No instrumentation | past | 1.610 | 0.000 | 0.246 | 1.559 | 1.602 | 1.652 | 101.832 | 1.438 |
Deactivated probe - A | current | 4.159 | 0.001 | 0.429 | 3.928 | 4.073 | 4.368 | 148.685 | 3.649 |
Deactivated probe - A | past | 4.222 | 0.001 | 0.763 | 4.015 | 4.204 | 4.385 | 456.289 | 3.630 |
Deactivated probe - B | current | 4.098 | 0.001 | 0.435 | 3.899 | 4.011 | 4.306 | 182.744 | 3.550 |
Deactivated probe - B | past | 4.083 | 0.001 | 0.405 | 3.873 | 4.040 | 4.264 | 105.825 | 3.566 |
No logging - A | current | 169.984 | 0.011 | 5.706 | 167.678 | 168.282 | 169.045 | 361.831 | 164.647 |
No logging - A | past | 168.074 | 0.010 | 4.970 | 166.397 | 166.920 | 167.544 | 844.757 | 163.573 |
No logging - B | current | 42.436 | 0.003 | 1.611 | 41.845 | 42.067 | 42.323 | 223.222 | 40.814 |
No logging - B | past | 42.978 | 0.004 | 2.171 | 42.073 | 42.288 | 42.599 | 405.374 | 41.057 |
Text file - A | current | 1462.297 | 1.277 | 651.527 | 1393.889 | 1442.212 | 1508.754 | 187729.600 | 1366.091 |
Text file - A | past | 1470.043 | 1.214 | 619.445 | 1404.719 | 1444.597 | 1520.938 | 231722.195 | 1374.930 |
Text file - B | current | 1234.754 | 1.113 | 567.737 | 1177.812 | 1217.985 | 1277.408 | 260738.200 | 1152.230 |
Text file - B | past | 1247.208 | 1.133 | 578.291 | 1189.124 | 1234.322 | 1287.433 | 232731.622 | 1158.805 |
Binary TCP - A | current | 670.581 | 0.073 | 37.238 | 660.772 | 663.351 | 672.218 | 24504.440 | 389.796 |
Binary TCP - A | past | 672.056 | 0.295 | 150.551 | 662.042 | 664.721 | 673.278 | 128266.770 | 393.031 |
Binary TCP - B | current | 473.871 | 0.033 | 16.697 | 467.599 | 470.235 | 474.388 | 3546.343 | 235.653 |
Binary TCP - B | past | 468.211 | 0.042 | 21.381 | 461.180 | 463.567 | 467.863 | 3595.451 | 237.074 |
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. Text file logging is slow and getting more irrelevant in the performance benchmarks. The diagram below, therefore, does not show the 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 | max | min |
---|---|---|---|---|---|---|---|---|---|
No instrumentation | current | 0.103 | 0.000 | 0.037 | 0.102 | 0.103 | 0.103 | 9.315 | 0.101 |
No instrumentation | past | 0.108 | 0.000 | 0.042 | 0.107 | 0.108 | 0.108 | 25.239 | 0.104 |
No logging | current | 6.703 | 0.088 | 44.944 | 6.426 | 6.491 | 6.618 | 31393.580 | 6.216 |
No logging | past | 6.402 | 0.038 | 19.356 | 6.235 | 6.271 | 6.313 | 9580.571 | 6.092 |
Zipkin | current | 11.042 | 0.102 | 51.951 | 10.101 | 10.149 | 10.229 | 38921.200 | 8.982 |
Zipkin | past | 10.410 | 0.032 | 16.439 | 9.711 | 9.773 | 9.881 | 10301.141 | 8.957 |
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 | max | min |
---|---|---|---|---|---|---|---|---|---|
No instrumentation | current | 41.076 | 0.014 | 7.354 | 40.827 | 41.233 | 41.524 | 290.159 | 36.038 |
No instrumentation | past | 40.902 | 0.014 | 7.291 | 39.330 | 40.986 | 41.314 | 301.581 | 35.901 |
Deactivated probe | current | 40.994 | 0.015 | 7.601 | 40.250 | 40.473 | 40.743 | 338.685 | 35.647 |
Deactivated probe | past | 41.042 | 0.015 | 7.604 | 40.183 | 40.670 | 40.965 | 364.818 | 35.574 |
No logging | current | 42.402 | 0.026 | 13.048 | 41.861 | 42.163 | 42.465 | 10639.750 | 36.809 |
No logging | past | 41.056 | 0.015 | 7.673 | 40.514 | 40.811 | 41.090 | 543.287 | 35.823 |
Zipkin | current | 41.711 | 0.015 | 7.627 | 41.073 | 41.328 | 41.596 | 492.710 | 36.223 |
Zipkin | past | 40.658 | 0.015 | 7.709 | 39.984 | 40.253 | 40.526 | 1067.463 | 35.303 |
Prometheus | current | 40.491 | 0.016 | 8.027 | 40.087 | 40.479 | 40.780 | 1489.498 | 35.556 |
Prometheus | past | 41.305 | 0.015 | 7.766 | 40.626 | 40.929 | 41.201 | 739.590 | 35.903 |