RFR: 8284686: Interval of < 1 ms disables ExecutionSample events
Johannes Bechberger
duke at openjdk.java.net
Wed Apr 13 09:10:15 UTC 2022
On Wed, 13 Apr 2022 09:00:38 GMT, Jaroslav Bachorik <jbachorik at openjdk.org> wrote:
>> Fixes the issue by rounding the period interval to the next full millisecond larger than zero.
>>
>> The following from the bug report works now:
>>
>> java -XX:StartFlightRecording=filename=flight.jfr,jdk.ExecutionSample#period=999us CLASS_FILE; jfr print --events jdk.ExecutionSample flight.jfr
>>
>> It considers the period to be `1ms`, producing the recording as expected.
>
> src/jdk.jfr/share/classes/jdk/jfr/internal/settings/PeriodSetting.java line 118:
>
>> 116: long nanos = Utils.parseTimespanWithInfinity(value);
>> 117: if (nanos != Long.MAX_VALUE) {
>> 118: eventType.setPeriod(Math.max(1, Math.round(nanos / 1_000_000f)), false, false);
>
> Is `Math.round()` necessary here?
> We can just keep the integer division which will result to `0` for all arguments < 1_000_000 and the `Math.max()` will take care of providing the correct default.
>
> Another thing to consider - what should happen if the `nanos` value is indeed `0`. Should the event perhaps be disabled?
You're correct. I will alter it accordingly.
-------------
PR: https://git.openjdk.java.net/jdk/pull/8183
More information about the hotspot-jfr-dev
mailing list