From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Andi Kleen <andi@firstfloor.org>
Cc: Brendan Gregg <brendan.d.gregg@gmail.com>,
Carl Love <cel@us.ibm.com>, Pekka Enberg <penberg@kernel.org>,
"linux-perf-use." <linux-perf-users@vger.kernel.org>
Subject: Re: Perf support for interpreted and Just-In-Time translated olanguages
Date: Tue, 9 Dec 2014 19:22:03 -0300 [thread overview]
Message-ID: <20141209222203.GD8788@kernel.org> (raw)
In-Reply-To: <87ppbs4h5k.fsf@tassilo.jf.intel.com>
Em Tue, Dec 09, 2014 at 02:01:11PM -0800, Andi Kleen escreveu:
> Arnaldo Carvalho de Melo <acme@kernel.org> writes:
> >
> > Humm, I wonder if we could try to attach a 'perf probe' (uprobes) to
> > some JVM method that is known to invalidate JITted code -> symtab
> > mappings so that we would use it as a PERF_RECORD_MMAP equivalent...
> > I.e. we would know that that map overlaps the previous one and that the
> > symtab is a new one for that addr range, etc, just like we do for
> > executable mmaps coming from the kernel (PERF_RECORD_MMAP).
>
> JAVA already has a API to get all these information. That is
> what oprofile, Vtune and Brendan's agent uses.
I understood that there is a way to ask for the current JITted code ->
symtab, my question was specifically about how to get notifications when
those mappings change.
The described solutions states that those maps can get stale, i.e. they
will change and we don't get a notification for that.
When we use mmap(addr, len, PROT_EXEC) the kernel has a meta event
called PERF_RECORD_MMAP that will record addr range, symtab DSO path,
and we ask it to be timestamped, how to do that for the equivalent part
in the JVM?
My initial thought was to find that using perf probe and insert there a
probe point, but I think that there may be already an existing
tracepoint in the jvm for that, one that, from what I've read so far,
is _not_ being used by this java perf agent, right?
From what I understood, how would it insert that event into the
perf.data event stream? Only if it necessarily involved a new mmap, via
the kernel, etc.
> It just needs a better interface from the agent to perf, to pass all
> needed information, including symbols, line numbers, executable code
> (for PT decoding and for showing diassembler), and ordering it by time
> so that no hacks are needed.
>
> BTW other JITs (LLVM, Mono, V8, ...) have similar interfaces.
>
> Longer term as the kernel gets more JITed (eBPF etc.) it likely needs
> some kind of JIT interface too.
Right, this is something we need to have, no questions about it, its
just a matter of cooking up some prototype implementation...
If, for instance, the java agent would put on some file those events,
timestamped, then when in perf report we would just insert them into the
event stream as synthesized PERF_RECORD_MMAPs, probably that would be
enough.
> -Andi
>
> --
> ak@linux.intel.com -- Speaking for myself only
next prev parent reply other threads:[~2014-12-09 22:22 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-05 20:18 Perf support for interpreted and Just-In-Time translated languages Carl Love
2014-12-05 21:27 ` Brendan Gregg
2014-12-09 20:34 ` Arnaldo Carvalho de Melo
2014-12-09 22:01 ` Andi Kleen
2014-12-09 22:22 ` Arnaldo Carvalho de Melo [this message]
2014-12-10 0:38 ` Perf support for interpreted and Just-In-Time translated olanguages Andi Kleen
2014-12-10 17:41 ` Carl Love
2014-12-10 18:09 ` Andi Kleen
2014-12-10 19:21 ` Arnaldo Carvalho de Melo
2014-12-10 19:19 ` Arnaldo Carvalho de Melo
2014-12-10 17:32 ` Andi Kleen
2014-12-10 17:39 ` David Ahern
2014-12-10 18:05 ` Andi Kleen
2014-12-10 18:27 ` David Ahern
2014-12-10 19:43 ` Arnaldo Carvalho de Melo
2015-01-09 20:19 ` Carl Love
2015-01-10 4:15 ` William Cohen
2015-01-10 15:14 ` David Ahern
2015-01-12 17:22 ` Carl Love
2015-01-12 17:58 ` David Ahern
2015-01-12 18:43 ` Carl Love
2015-01-20 18:19 ` Carl Love
2015-01-20 19:29 ` Arnaldo Carvalho de Melo
2015-01-20 20:34 ` Carl Love
2015-01-20 20:52 ` Arnaldo Carvalho de Melo
2015-01-23 8:25 ` Sujoy Saraswati
2014-12-10 7:55 ` Perf support for interpreted and Just-In-Time translated languages Pekka Enberg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20141209222203.GD8788@kernel.org \
--to=acme@kernel.org \
--cc=andi@firstfloor.org \
--cc=brendan.d.gregg@gmail.com \
--cc=cel@us.ibm.com \
--cc=linux-perf-users@vger.kernel.org \
--cc=penberg@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).