On Wed, 29 Oct 2025 18:08:31 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 phohensee review comments Looks good. Just a question on whether we really need to specify the GCs in the tests. I was hoping we can not do this, it seems like more to maintain that should be automatic as long as we do test batches with the different collectors. Do we need available GCs as specified in the tests get run on every test, or can we afford to let that be decided by the framework? (There might be some tests where we do want to make sure they run with all GCs regardless of what jtreg command runs, but I would hope that is a small set.) ------------- Marked as reviewed by kevinw (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/27537#pullrequestreview-3460067101
