The examination of performance changes or the performance behavior of a software requires the measurement of the performance. This is done via probes, i.e., pieces of code which obtain and process measurement data, and which are inserted into the examined application. The execution of those probes in a singular method creates overhead, which deteriorates performance measurements of calling methods and slows down the measurement process. Therefore, an important challenge for performance measurement is the reduction of the measurement overhead. To address this challenge, the overhead should be minimized. Based on an analysis of the sources of performance overhead, we derive the following four optimization options: (1) Source instrumentation instead of AspectJ instrumentation, (2) reduction of measurement data, (3) change of the queue and (4) aggregation of measurement data. We evaluate the effect of these optimization options using the MooBench benchmark. Thereby, we show that these optimizations options reduce the monitoring overhead of the monitoring framework Kieker. For MooBench, the execution duration could be reduced from 4.77 ms to 0.39 ms per method invocation on average.
翻译:对软件性能变化或性能行为的检测需要测量性能。这通过探针(即获取并处理测量数据的代码片段)实现,这些探针被插入到被检测的应用程序中。在单一方法中执行这些探针会产生开销,这会恶化调用方法的性能测量结果,并拖慢测量过程。因此,减少测量开销是性能测量中的一个重要挑战。为应对这一挑战,需将开销降至最低。基于对性能开销来源的分析,我们推导出以下四种优化方案:(1)使用源码插桩而非AspectJ插桩;(2)减少测量数据量;(3)更改队列机制;(4)聚合测量数据。我们利用MooBench基准测试评估这些优化方案的效果,结果表明这些优化措施能够降低Kieker监控框架的监控开销。在MooBench测试中,每次方法调用的平均执行时间可从4.77毫秒降至0.39毫秒。