  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.
