On Fri, 24 Oct 2025 12:37:02 GMT, Jonas Norlinder <[email protected]> wrote:
>> Hi all, >> >> This PR augments the CPU time sampling measurement capabilities that a user >> can perform from Java code with the addition of >> `MemoryMXBean.getGcCpuTime()`. With this patch it will be possible for a >> user to measure process and GC CPU time during critical section or >> iterations in benchmarks to name a few. This new method complements the >> existing `OperatingSystemMXBean.getProcessCpuTime()` for a refined >> understanding. >> >> `CollectedHeap::gc_threads_do` may operate on terminated GC threads during >> shutdown, but thanks to JDK-8366865 by @walulyai we can piggyback on the new >> `Universe::is_shutting_down`. I have implemented a stress-test >> `test/jdk/java/lang/management/MemoryMXBean/GetGcCpuTime.java` that may >> identify reading CPU time of terminated threads. Synchronizing on >> `Universe::is_shutting_down` and `Heap_lock` resolves this problem. >> >> FWIW; To my understanding we don't want to add a >> `Universe::is_shutting_down` check in gc_threads_do as this may introduce a >> performance penalty that is unacceptable, therefore we must be careful about >> the few places where external users call upon gc_threads_do and may race >> with a terminating VM. >> >> Tested: test/jdk/java/lang/management/MemoryMXBean/GetGcCpuTime.java, >> jdk/javax/management/mxbean hotspot/jtreg/vmTestbase/nsk/monitoring on Linux >> x64, Linux aarch64, Windows x64, macOS x64 and macOS aarch64 with release >> and fastdebug. > > Jonas Norlinder has updated the pull request incrementally with one > additional commit since the last revision: > > Fix link for getProcessCpuTime src/java.management/share/classes/java/lang/management/MemoryMXBean.java line 274: > 272: * spent in garbage collection. > 273: * > 274: * <p> This is the CPU time used by all garbage collection Starting this paragraph with "This is the CPU time ..." is a bit awkward. Can you try "The time spent in spent in garbage collection (GC) is the CPU time ...". src/java.management/share/classes/java/lang/management/MemoryMXBean.java line 289: > 287: * in garbage collection is highly implementation dependent. > 288: * In the HotSpot Virtual Machine implementation reported > 289: * time will include relevant implementation-specific details such "In the HotSpot Virtual Machine implementation reported time will include". A suggestion to improve this is to change it to "In the HotSpot Virtual Machine, this time includes.." ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/27537#discussion_r2461014442 PR Review Comment: https://git.openjdk.org/jdk/pull/27537#discussion_r2461027518
