Fully featured low overhead profiler for Java EE and Java SE platforms.
Performance monitoring and profiling of Jenkins, TeamCity, Gradle, Maven, Ant, JUnit and TestNG.
Easy to use performance and memory profiler for .NET framework.

CPU usage estimation

You can estimate CPU usage in given time range, basing on available stack trace telemetry.

How to invoke

  • Select arbitrary time range in telemetry graph:

Comparison with CPU sampling

This feature is similar to CPU sampling, as it also uses sampling approach, but there are sufficient differences:

Comparison criteria CPU usage estimation "Real" CPU sampling Comments
Results availability Always, as long as stack telemetry is enabled Should be explicitly started CPU usage estimation is ideal for analysis of anomalies such CPU spikes, especially those which has already happened, so you do not need to turn CPU sampling or tracing on and try reproduce the spike.
Accuracy Lower Higher

CPU usage estimation is based on thread telemetry, whose frequency is approximately 1 sample per second.

CPU usage estimation can adequately measure events not shorter than the thread telemetry period.

So, it suits for measuring events that last several seconds. But if the event is long enough, the estimation will do its job - locate problematic code responsible for the CPU spike.

For measuring shorter events or methods, use normal CPU profiling.

Granularity Results are available for each particular event, as well as for entire time range Results are aggregated for entire period of CPU profiling

CPU usage estimation enables analysis of particular events or time ranges within single snapshot.

CPU profiling results are aggregated since CPU profiling has been started. It is not possible to "extract" CPU profiling results for a smaller time range within one snapshot. (However, you can choose which method calls to analyze.)