Question about trace-IDs
Roman Kennke
rkennke at redhat.com
Mon Sep 21 11:48:07 UTC 2020
Hi Markus,
> Thanks for noticing some staleness here - remnants from having used
> different atomic increment logic(s) in the past.
>
> You can initialize all counters to 0, and also let LAST_TYPE_ID be
> used as-is without the + 1.
>
Thanks for confirming this!
While I'm at it, I could also replace the helper method atomic_inc()
and its uses with Atomic::add() which has the advantage that it uses
CPU instructions for atomic-add instead of a CAS-loop when the CPU has
such an instruction. WDYT?
Roman
> Thanks
> Markus
>
> -----Original Message-----
> From: Roman Kennke <rkennke at redhat.com>
> Sent: den 21 september 2020 12:39
> To: hotspot-jfr-dev at openjdk.java.net
> Subject: Question about trace-IDs
>
> Hello all,
>
> While studying the code around JFR trace-IDs, I came about something
> that I find a little odd: trace-IDs for modules, packages and class-
> loaders start at 2, while trace-IDs for threads start at 1 (and
> classes at LAST_TYPE_ID+1). The static counters (for modules,
> packages and
> classloaders) are initialized at 1, and the first call to
> atomic_inc() increments this to 2 and this is the first value used. I
> understand that 0 is the uninitialized value, but don't see that 1
> has any special meaning.
>
> See for example here:
> https://github.com/openjdk/jdk/blob/master/src/hotspot/share/jfr/recorder/checkpoint/types/traceid/jfrTraceId.cpp#L65
>
> vs
>
> https://github.com/openjdk/jdk/blob/master/src/hotspot/share/jfr/recorder/checkpoint/types/traceid/jfrTraceId.cpp#L60
>
> Would it hurt to start counting trace-IDs for packages, modules and
> classloaders at 1 too? (If not, I'd like to submit a patch - I'm
> happy about something simple as my first contributions to JFR ;-) ).
>
> Cheers,
> Roman
>
More information about the hotspot-jfr-dev
mailing list