RFR: 8356027: Print enhanced compilation timings [v2]
Ashutosh Mehra
asmehra at openjdk.org
Mon May 5 15:52:53 UTC 2025
On Thu, 1 May 2025 19:19:32 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:
>> In Leyden, we have the extended compilation timings printouts with -XX:+PrintCompilation / UL, that are very useful to study compiler dynamics. These timings include:
>> 1. Time spent before queuing: shows the compilation queue bottlenecks
>> 2. Time spent in the queue: shows delays caused by queue bottlenecks and compiler load
>> 3. Time spent actually compiling: shows the per-method compilation costs
>>
>> We should consider the same kind of printout for mainline. This would also require us to print the compilation task _after_ the compilation, not only before it. This improvement would also obviate any need for `PrintCompilation2` flag, [JDK-8356028](https://bugs.openjdk.org/browse/JDK-8356028).
>>
>> The difference from the output format we ship in Leyden:
>> 1. This output prints before/after the compilation to maintain old behavior partially. The "before" printout is now prepended with `started` to clearly mark it as such.
>> 2. The output is raw number in microseconds. In Leyden repo, we have these prepended with characters, like `C0.1`, but that prepending makes it a bit inconvenient with scripts. This PR also does microseconds, instead of fractional milliseconds. This should be enough to capture the wide range of durations.
>>
>> See the sample `-XX:+PrintCompilation` output in the comments.
>>
>> Additional testing:
>> - [x] Linux x86_64 server fastdebug, `compiler`
>> - [x] Linux x86_64 server fastdebug, `all`
>
> Aleksey Shipilev has updated the pull request incrementally with one additional commit since the last revision:
>
> Test TestDuplicatedLateInliningOutput.java
src/hotspot/share/compiler/compileBroker.cpp line 2354:
> 2352: task->mark_finished(os::elapsed_counter());
> 2353:
> 2354: if (failure_reason != nullptr) {
I see this code has been moved into the block that handles the case when JVMCI is not used. Earlier this code was executed unconditionally. Is this code not applicable for JVMCI case now?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/24984#discussion_r2071851335
More information about the hotspot-dev
mailing list