RFR: 8373625: CPUTimeCounters creates a total counter for unsupported GCs
Stefan Johansson
sjohanss at openjdk.org
Tue Dec 16 14:04:54 UTC 2025
On Fri, 12 Dec 2025 21:30:01 GMT, Jonas Norlinder <jnorlinder at openjdk.org> wrote:
> `CPUTimeCounters` unconditionally creates `CPUTimeGroups::CPUTimeType::gc_total`. Since only Parallel and G1 are supported by this framework/class, this leads to publishing a counter that always resolves to 0. This may be contradictory for an end-user especially so as we now support logging GC CPU time for any GC inside Hotspot. For an example using `-XX:+UseZGC -Xlog:cpu` we get
>
>
> [7.907s][info][cpu] === CPU time Statistics =============================================================
> [7.907s][info][cpu] CPUs
> [7.907s][info][cpu] s % utilized
> [7.907s][info][cpu] Process
> [7.907s][info][cpu] Total 186.9562 100.00 23.6
> [7.907s][info][cpu] Garbage Collection 0.6700 0.36 0.1
> [7.907s][info][cpu] GC Threads 0.6692 0.36 0.1
> [7.907s][info][cpu] VM Thread 0.0008 0.00 0.0
> [7.907s][info][cpu] =====================================================================================
>
>
> But `jcmd $(pgrep -n java) PerfCounter.print | grep -E "sun.threads.total_gc_cpu_time"` prints: `sun.threads.total_gc_cpu_time=0`.
Looks good.
I was a bit hesitant, but since there are a lot of other "gc cpu counters" just defined for G1 and Parallel I guess this is fine.
Marked as reviewed by sjohanss (Reviewer).
-------------
PR Review: https://git.openjdk.org/jdk/pull/28803#pullrequestreview-3583245272
PR Review: https://git.openjdk.org/jdk/pull/28803#pullrequestreview-3583246794
More information about the hotspot-gc-dev
mailing list