Native API for JFR event producers

Marcus Hirt marcus at hirt.se
Thu Apr 2 11:53:22 UTC 2020


Hi all,

Did this get anywhere? It's on my top 10 list of things that would make JFR
even more useful. :)

Kind regards,
Marcus

-----Ursprungligt meddelande-----
Från: hotspot-jfr-dev <hotspot-jfr-dev-bounces at openjdk.java.net> För Erik
Gahlin
Skickat: den 21 februari 2020 01:00
Till: Nitsan Wakart <nwakart at gmail.com>
Kopia: hotspot-jfr-dev <hotspot-jfr-dev at openjdk.java.net>
Ämne: Re: Native API for JFR event producers

Hi Nitsan,

I need to think about this for a while. I will get back to you.

Thanks
Erik

> On 18 Feb 2020, at 16:43, Nitsan Wakart <nwakart at gmail.com> wrote:
> 
> Hi Erik,
> I would argue it is a very inconvenient back door to work through. It 
> would deter implementors and in some cases just not work. In particular:
> * I don't think it's a viable option for any signal handling event 
> source
> * I think the overheads introduced by upcalls will similarly make it 
> too slow for high frequency callers
> 
> One of the use cases I have in mind is repurposing Async-Profiler 
> (allows profiling on perf_events, itimer etc) as a JFR event source, I 
> don't believe going via the Java API would work.
> An alternative to JVMTI is whatever limbo AsyncGetCallTrace lives in. 
> It allows tool builders to integrate and makes no promises that the 
> API is available beyond OpenJDK.
> Thanks,
> Nitsan
> 
> On Tue, Feb 18, 2020 at 4:50 PM Erik Gahlin <erik.gahlin at oracle.com> wrote:
> 
>> Hi Nitsan,
>> 
>> Something we didn't discuss during OCW was doing up calls to the Java 
>> API. I know you mentioned it, but what was the real problem there?
>> 
>> It is cumbersome to code against, but one could imagine a native 
>> wrapper API with convenience methods. It could be implemented 
>> quickly, it is easy to maintain and if not part of the JDK, it would 
>> work with older releases.
>> 
>> Extending JVMTI is more problematic since there are lots of processes 
>> around it.
>> 
>> Thanks
>> Erik
>> 
>> On 2020-02-17 07:56, Nitsan Wakart wrote:
>>> Hi,
>>> Picking up a conversation from the OpenJDK committers workshop, the 
>>> following feature was requested/suggested:
>>> "Make the means of producing JFR events available to native agents"
>>> 
>>> The motivation for this request is to serve use cases where the 
>>> events published come from data sources which are naturally native, e.g.:
>>> - Memory allocator fragmentation stats (`malloc_stats`)
>>> - `perf_events`/BPF/dtrace/other profiling
>>> - Native library counters
>>> 
>>> This would require something like:
>>> - Settling on some extension to JVMTI to accommodate the API. 
>>> Including `JfrEvent`.
>>> - Declaring/reserving event types statically.
>>> - Recording lifecycle hooks to notify the event sources of 
>>> start/stop/configuration events.
>>> 
>>> It would make sense for the above to mirror the Java API as much as 
>>> possible for consistency.
>>> In addition it would be good if the API allowed to describe native
>> threads,
>>> method calls, and stacks. This is to support the native profiling 
>>> use
>> cases.
>>> 
>>> Thanks everyone who participated in the discussion ( Eric, Ron, 
>>> Alan,
>> Mario
>>> and others), I hope I capture the sentiment from our conversation 
>>> correctly, please chip in so we can flesh this out :-)
>>> 
>>> Regards,
>>> Nitsan
>> 




More information about the hotspot-jfr-dev mailing list