Hmm... "Justify/explain your beliefs." Fair, I'm game:
I think I'm sure that my methods are both JIT'd because perf-java-flames
shows them both in green, and I think that's derived from some prefix on
the symbol name where the JVM (via perf) says it's JIT'd. If it weren't
JIT'd, I'd see it listed in red as "Interpreter".
I waited for the system to warm up before grabbing the flame-chart, and
on one run, I was too early, so I actually saw one symbol shift from
interpreted to JIT. I have not used jitwatch, but the signs I am looking
at seem reliable. The interpreter JIT'd the inner method first, then the
outer one, as expected based on call frequency.
I've never seen this resolve_static_call method show up before in any of
my profiling of Java code.
From that PoV, it looks as if the interpreter is doing something odd
with method call between the two methods, despite that it should just be
a static linkage. Like it JIT'd both methods, but didn't JIT the call,
or it's using some interpreter-path code in the call? So is there a
linkage limit based on #methods in the class, or something? Because
making the methods non-static ALSO moved them into a new class which has
only 2 methods... ok, new experiment...
For what it's worth, I seem to be really struggling with JDK 1.8.1b191
performance on the new Xeon hardware for other reasons, too. I'm seeing
perf saying pthread_cond_wait -> native_write_msr is taking 50% of
runtime, and not even sure where to start with that except limit the
life of any JVM to 6 hours and restart it. I kind of want to blame a
Kernel / PMU change but it only affects the JVM.
Caveat: I don't do JVM internals, I'm mostly a JLS-layer muggle.
S.
On 2/4/19 10:53 PM, Todd Lipcon wrote:
> On Mon, Feb 4, 2019 at 9:13 PM Shevek <
goo...@anarres.org
> <mailto:
goo...@anarres.org>> wrote:
>
> This isn't a JIT issue. According to perf-java-flames, all my code DID
> get jitted. The overhead is entirely calls to this mystery
> resolve_static_call function, so it looks like a static method lookup
> issue in the JVM. The shape of the stack profile makes it look as if
> something is recursive, too.
>
>
> Are you sure? From the code it certainly looks like
> 'resolve_static_call' is part of the interpreter code path.
>
> -Todd
>
>
> On 2/4/19 8:01 PM, Todd Lipcon wrote:
> > Tried looking at LogCompilation output with jitwatch? It's been
> helpful
> > for me in the past to understand why something wouldn't get jitted.
> >
> > Todd
> >
> > On Mon, Feb 4, 2019, 7:54 PM Shevek <
goo...@anarres.org
> <mailto:
goo...@anarres.org>
> > <mailto:
mechanical-sympathy%2Bunsu...@googlegroups.com
> <mailto:
mechanical-sympathy%252Buns...@googlegroups.com>>.
> <mailto:
mechanical-sympathy%2Bunsu...@googlegroups.com>
> > <mailto:
mechanical-symp...@googlegroups.com