Analysis of overhead in dynamic java performance monitoring

V Horký, J Kotrč, P Libič, P Tůma - Proceedings of the 7th ACM/SPEC on …, 2016 - dl.acm.org
V Horký, J Kotrč, P Libič, P Tůma
Proceedings of the 7th ACM/SPEC on International Conference on Performance …, 2016dl.acm.org
In production environments, runtime performance monitoring is often limited to logging of
high level events. More detailed measurements, such as method level tracing, tend to be
avoided because their overhead can disrupt execution. This limits the information available
to developers when solving performance issues at code level. One approach that reduces
the measurement disruptions is dynamic performance monitoring, where the measurement
instrumentation is inserted and removed as needed. Such selective monitoring naturally …
In production environments, runtime performance monitoring is often limited to logging of high level events. More detailed measurements, such as method level tracing, tend to be avoided because their overhead can disrupt execution. This limits the information available to developers when solving performance issues at code level. One approach that reduces the measurement disruptions is dynamic performance monitoring, where the measurement instrumentation is inserted and removed as needed. Such selective monitoring naturally reduces the aggregate overhead, but also introduces transient overhead artefacts related to insertion and removal of instrumentation. We experimentally analyze this overhead in Java, focusing in particular on the measurement accuracy, the character of the transient overhead, and the longevity of the overhead artefacts.
Among other results, we show that dynamic monitoring requires time from seconds to minutes to deliver stable measurements, that the instrumentation can both slow down and speed up the execution, and that the overhead artefacts can persist beyond the monitoring period.
ACM Digital Library