RFR: CODETOOLS-7902928: Improve support for async-profiler 2.x [v2]
Andrei Pangin
apangin at openjdk.java.net
Mon May 10 14:30:10 UTC 2021
On Fri, 7 May 2021 06:06:18 GMT, Jason Zaugg <jzaugg at openjdk.org> wrote:
>> Allow multiple events to be captured simultaneously in this version,
>> provided that JFR is chosen as output format.
>>
>> Delegate output file writing to the async-profiler. This is required
>> in 2.x for the JFR output but is supported in both versions. The file
>> path must be provided when starting the profiler with JFR output, so
>> we need to create the per-trial output directory in the first
>> `beforeIteration`.
>>
>> Avoid the character '%' in the generated directory name as this
>> is interpreted by async-profiler as part %p or %t placeholder.
>
> Jason Zaugg has updated the pull request incrementally with one additional commit since the last revision:
>
> Fixup: remove incorrect/unneeded 'reset' argument
jmh-core/src/main/java/org/openjdk/jmh/profile/AsyncProfiler.java line 100:
> 98:
> 99: OptionSpec<String> optEvent = parser.accepts("event",
> 100: "Event(s) to sample: cpu, alloc, lock, wall, itimer; com.foo.Bar.methodName; any event from `perf list` e.g. cache-misses")
I'd vote against making `event` a multi-option:
- First, not all events can be profiled together, e.g. you cannot profile `wall` and `cache-misses` at the same time. Only `alloc` and/or `lock` may be combined with other events.
- Second, async-profiler has dedicated options for specifying the allocation profiling interval and the lock profiling threshold, like `alloc=512k,lock=1ms`. Even though multiple `event=x` options are allowed, the canonical way to turn on allocation and lock profiling is `event=cpu,alloc[=interval],lock[=threshold]` (interval and threshold are optional).
-------------
PR: https://git.openjdk.java.net/jmh/pull/37
More information about the jmh-dev
mailing list