RFR: 8342818: Implement JEP 509: JFR CPU-Time Profiling [v56]
Markus Grönlund
mgronlun at openjdk.org
Wed Jun 4 17:49:28 UTC 2025
On Wed, 4 Jun 2025 17:22:37 GMT, Johannes Bechberger <jbechberger at openjdk.org> wrote:
>> This is the code for the [JEP 509: CPU Time based profiling for JFR](https://openjdk.org/jeps/509).
>>
>> Currently tested using [this test suite](https://github.com/parttimenerd/basic-profiler-tests). This runs profiles the [Renaissance](https://renaissance.dev/) benchmark with
>> - ... different heap sizes
>> - ... different GCs
>> - ... different samplers (the standard JFR and the new CPU Time Sampler and both)
>> - ... different JFR recording durations
>> - ... different chunk-sizes
>
> Johannes Bechberger has updated the pull request incrementally with one additional commit since the last revision:
>
> Readd lock
src/hotspot/share/jfr/periodic/sampling/jfrCPUTimeThreadSampler.cpp line 300:
> 298: if (!Atomic::cmpxchg(&_disenrolled, false, true)) {
> 299: log_trace(jfr)("Disenrolling CPU thread sampler");
> 300: if (Atomic::fetch_then_and(&_signal_handler_installed, false)) {
fetch_then_and with false? Must be simpler way to express this? Like Atomic::load(&_signal_handler_installed)?
src/hotspot/share/jfr/periodic/sampling/jfrCPUTimeThreadSampler.cpp line 608:
> 606: void JfrCPUSamplerThread::stop_signal_handlers() {
> 607: // set the stop signal bit
> 608: Atomic::or_then_fetch(&_active_signal_handlers, STOP_SIGNAL_BIT, memory_order_acq_rel);
Whatever was fetched is gone with the wind...
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25302#discussion_r2127117357
PR Review Comment: https://git.openjdk.org/jdk/pull/25302#discussion_r2127119596
More information about the serviceability-dev
mailing list