Problem about YourKit version 15088.

Questions about YourKit Java Profiler
Post Reply
beckam
Posts: 2
Joined: Sat Aug 26, 2017 7:40 am

Problem about YourKit version 15088.

Post by beckam »

Hello all member!

I'm using YourKit build-15088 to profile an Eclipse RCP running with OpenJDK 8 on Linux. I tried to change the CPU tracing settings by removing the walltime entries. I did that to avoid profiling Thread.sleep(). The result is the same. I tried to reduce adaptive_min_method_invocation_count and adaptive_max_average_method_time_ns, and the result is the same. For CPU sampling, I tried to reduce the sampling period (thus increasing the event frequency) and the same result occurs. I have tried to find the solution over the internet but still find the cause.
The CPU tracing report shows that the time spent is inside java.lang.Thread.run(), but the stack trace is incomplete. The Callee List does not show the children of that method. I tried sampling instead of tracing and a similar result occurs.

Is there a bug that prevent YourKit to get a proper stack trace?

Thank's a lot!
Anton Katilin
Posts: 6172
Joined: Wed Aug 11, 2004 8:37 am

Re: Problem about YourKit version 15088.

Post by Anton Katilin »

Hello,

1. Version 2015 is no longer supported. Please use the latest version 2017.02 instead.
2. To remove sleep() time from the results please use the What-if feature:
https://www.yourkit.com/docs/java/help/cpu_what_if.jsp
3.
the stack trace is incomplete
Please disable the filters: https://www.yourkit.com/docs/java/help/filters.jsp
Please note that the latest version allows you to expand particular filtered branches instead in call trees of editing filters or turning them off.
Thorsten Goetzke
Posts: 13
Joined: Mon Aug 27, 2012 8:58 am

Re: Problem about YourKit version 15088.

Post by Thorsten Goetzke »

Hello backam,

Have you attached the agent or did you enable it at startup? I remember that old versions of yourkit have a bug where the combination of attaching and tracing doesn't provide useful stacktraces..
Here's a mail from 2016

The problem was caused by the attach mode limitations AND some
optimization in CPU tracing mode.

From this topic:
https://www.yourkit.com/docs/java/help/attach_agent.jsp

The attach mode limitations:

...

No profiling results for some methods:

- JVM may not be able to apply bytecode instrumentation to methods
of the objects that have been created before the agent attached.
Instead, the old, non-instrumented version of the bytecode will
keep running for them. This is a limitation of the JVM.

- Another JVM limitation is that native methods of classes that have
loaded before the profiler agent attached cannot be instrumented at
all. (There is no problem with classes loaded after the profiler has
attached.)

This means that their calls will be missing in:

- CPU tracing results (no problem for CPU sampling as it does not
depend on bytecode instrumentation)

- results of probes depending on instrumentation of those methods,
in particular, in the "Events" and "Performance Charts" views

----------------------------------------------------------

It seems that the missing methods in the stacks of the mentioned
events were no running instrumented bytecode. In CPU tracing mode, the
events reuse known stack trace obtained with CPU tracing for
optimization purposes. It seems we should turn this optimization off
for attached agents.

By the way, there would be no problem with CPU sampling - you would
see full stacks for all events.

We'll make the fix in the next build. If you wish we can send you the
agent with the fix as soon as we build it.

Best regards,
Anton Katilin
Post Reply