RFR(S) 8246019 PerfClassTraceTime slows down VM start-up
David Holmes
david.holmes at oracle.com
Wed Jun 17 01:20:58 UTC 2020
Hi Ioi,
On 17/06/2020 6:14 am, Ioi Lam wrote:
> https://bugs.openjdk.java.net/browse/JDK-8246019
> http://cr.openjdk.java.net/~iklam/jdk16/8246019-avoid-PerfClassTraceTime.v01/
>
>
> PerfClassTraceTime is (a rarely used feature) for measuring the time
> spent during class linking and initialization.
"A special command jcmd <process id/main class> PerfCounter.print prints
all performance counters in the process."
How do you know this is a "rarely used feature"?
I find it hard to evaluate whether this short-circuiting of the time
tracing is reasonable or not. Obviously any monitoring mechanism should
impose minimal overhead compared to what is being measured, and these
timers fall short in that regard. But if these stats become meaningless
then they may as well be removed.
I think the serviceability folk (cc'd) need to evaluate this in the
context of the M&M tools.
> However, it's quite
> expensive and it needs to start and stop a bunch of timers. With CDS,
> it's quite often for the overhead of the timer itself to be much more
> than the time it's trying to measure, giving unreliable measurement.
>
> In this patch, when it's clear that the init and linking will be very
> quick, I disable the timer and count only the number of invocations.
> This shows a small improvement in start-up
I'm curious if you tried to forcing EagerInitialization to be true to
see how that improves the baseline. I've always noticed eager_init in
the code, but hadn't realized it is disabled by default.
Cheers,
David
-----
> Results of " perf stat -r 100 bin/java -Xshare:on
> -XX:SharedArchiveFile=jdk2.jsa -Xint -version "
>
> 59623970 59341935 (-282035) ----- 41.774 41.591 ( -0.183) -
> 59623495 59331646 (-291849) ----- 41.696 41.165 ( -0.531) --
> 59627148 59329526 (-297622) ----- 41.249 41.094 ( -0.155) -
> 59612439 59340760 (-271679) ---- 41.773 40.657 ( -1.116) -----
> 59626438 59335681 (-290757) ----- 41.683 40.901 ( -0.782) ----
> 59618436 59338953 (-279483) ----- 41.861 41.249 ( -0.612) ---
> 59608782 59340173 (-268609) ---- 41.198 41.508 ( 0.310) +
> 59614612 59325177 (-289435) ----- 41.397 41.738 ( 0.341) ++
> 59615905 59344006 (-271899) ---- 41.921 40.969 ( -0.952) ----
> 59635867 59333147 (-302720) ----- 41.491 40.836 ( -0.655) ---
> ================================================
> 59620708 59336100 (-284608) ----- 41.604 41.169 ( -0.434) --
> instruction delta = -284608 -0.4774%
> time delta = -0.434 ms -1.0435%
>
> The number of PerfClassTraceTime's used is reduced from 564 to 116 (so
> we have an overhead of about 715 instructions per use, yikes!).
More information about the serviceability-dev
mailing list