RFR: 8342818: Implement JEP 509: JFR CPU-Time Profiling [v42]
Johannes Bechberger
jbechberger at openjdk.org
Wed Jun 4 11:13:17 UTC 2025
On Wed, 4 Jun 2025 08:40:34 GMT, Markus Grönlund <mgronlun at openjdk.org> wrote:
>> src/hotspot/share/jfr/periodic/sampling/jfrCPUTimeThreadSampler.cpp line 606:
>>
>>> 604: void JfrCPUTimeThreadSampler::init_timers() {
>>> 605: // install sig handler for sig
>>> 606: PosixSignals::install_generic_signal_handler(SIG, (void*)::handle_timer_signal);
>>
>> SIGPROF is also used by external profilers. Need to check if SIGPROF handler is already installed and warn user.
>
> This is *very* important to have a robust failure mechanism when existing handlers are already installed. Why? JFR can be turned on dynamically from the outside, at any time, during runtime. A lot of agents could have installed their handlers by then.
>
> Please describe how you intend to handle the case where someone starts JFR late during runtime and the signal handler cannot be installed.
I added a log_error to tell the user
>> src/hotspot/share/jfr/periodic/sampling/jfrCPUTimeThreadSampler.hpp line 128:
>>
>>> 126: static void send_lost_event(const JfrTicks& time, traceid tid, s4 lost_samples);
>>> 127:
>>> 128: // Trigger sampling while a thread is not in a safepoint, from a seperate thread
>>
>> typo: separate
>
> And again, its not "sampling" that is triggered. It is async processing of the queue holding existing samples.
I removed the comment, as the method name itself is pretty self-explanatory.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25302#discussion_r2126330036
PR Review Comment: https://git.openjdk.org/jdk/pull/25302#discussion_r2126332382
More information about the hotspot-dev
mailing list