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.macl...@linux.microsoft.com/
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"). -- Nick