Throughout the entire documentation, we use some terminology regarding executions of methods.
The picture below presents a single method execution stack. The first element of the tree is called Root Call. All the methods' invocations, down the execution stack, are called simply Calls and Invocations interchangeably. The entire structure is called Execution Stack. When an exception is thrown by some of the methods and propagated through the stack, the origin exception is called Root Exception.
The picture below depicts the procedure of how the execution tree is built. In the picture below you can see four, sample execution trees of some method A
call.
The first a
view shows how the real execution stack looks. This is a real execution flow that takes place in your application. The second b
view presents the same stack instrumented by your agent. Depending on your configuration, the instrumentation may not cover the entire stack. The empty, grey boxes represent missed, not instrumented methods. As you can see, at this very point your instrumented execution flow is not complete. Moreover, in your application runtime, there can be situations when some of the instrumented method calls will not be reported. This empty, violet box in the third c
view represents this situation. Finally, what you actually observe in the workstation is the last d
view. This view presents an assembled stack with missing calls ignored. Now you know how to interpret the execution stack in the workstation and why the resulting stack can differ from the original one.
Self-time is a part of a method duration, in which the method executes its own code without calling any other methods. Suppose we have a situation depicted below. A method A
executes within duration_a
. However, this method calls another method B
and waits while the method B
is executing its own code. Then, when the method B
returns, the method A
can continue executing its code.
It's easy to see that the method B
execution time contributes to the method A
execution time and the difference between method A
duration and method B
duration is the self-time of the method A
.