Re: [PATCH] perf jvmti: remove redundant jitdump line table entries

From: Ian Rogers
Date: Thu May 28 2020 - 03:30:02 EST


On Wed, May 27, 2020 at 9:39 PM Nick Gasson <nick.gasson@xxxxxxx> wrote:
>
> On 05/28/20 02:08 AM, Ian Rogers wrote:
> >>
> >> I noticed it loses information when the Hotspot code cache is
> >> resized. I've been working around that by setting
> >> -XX:InitialCodeCacheSize and -XX:ReservedCodeCacheSize to large
> >> values. Does this help in your case?
> >
> > Thanks, I tried and also with Steve's patch:
> > https://lore.kernel.org/lkml/1590544271-125795-1-git-send-email-steve.maclean@xxxxxxxxxxxxxxxxxxx/
>
> Thanks for the reference! That patch fixes the problem I had with code
> cache resizing so the workaround above is no longer necessary.
>
> >
> > Trying something very basic like just the -version command with compile only:
> > /tmp/perf/perf record -k 1 -e cycles:u -F 6500 -o /tmp/perf.data java
> > -agentpath:/tmp/perf/libperf-jvmti.so -XX:+PreserveFramePointer
> > -XX:InitialCodeCacheSize=2G -XX:ReservedCodeCacheSize=2G
> > -XX:CompileOnly=1 -version
> > /tmp/perf/perf inject -i /tmp/perf.data -o /tmp/perf-jit.data -j
> > /tmp/perf/perf report -i /tmp/perf-jit.data
> >
> > I don't see any of the JDK classes but 35 unknown symbols out of 272.
> > The JDK classes are stripped to some degree iirc, but we should be
> > able to give a symbol name as we don't care about local variables and
> > like.
> >
>
> I tried this with latest perf/core and JDK 11 but I don't see any
> [unknown] from jitted-*.so. All the events are in "Interpreter": I think
> the options you want are -Xcomp -Xbatch rather than -XX:CompileOnly=1?
> The latter restricts compilation to the named method/package.
>
> There was a bug where no jitdump debug info was written for classes
> compiled without line tables. That was fixed by d3ea46da3 ("perf jvmti:
> Fix jitdump for methods without debug info").

Thanks, that fixed it! There are still two unknowns running -version
with Xcomp for me, I suspect they are both C2 stub routines as there
is some work necessary on these. Fwiw, I tried -client and fighting
the tiered compilation flags but to no avail.

Thanks,
Ian

> --
> Nick