> Hi all, > > This PR refactors the newly added GC CPU time code from > [JDK-8359110](https://bugs.openjdk.org/browse/JDK-8359110). > > As a stepping-stone to enable consolidation of CPU time tracking in e.g. > hsperf counters and GCTraceCPUTime and to have a unified interface for > tracking CPU time of various components in Hotspot this code can be > refactored. This PR introduces a new interface to retrieve CPU time for > various Hotspot components and it currently supports: > > CPUTimeUsage::GC::total() // the sum of gc_threads(), vm_thread(), > stringdedup() > > CPUTimeUsage::GC::gc_threads() > CPUTimeUsage::GC::vm_thread() > CPUTimeUsage::GC::stringdedup() > > CPUTimeUsage::Runtime::vm_thread() > > > I moved `CPUTimeUsage` to `src/hotspot/share/services` since it seemed > fitting as it housed similar performance tracking code like `RuntimeService`, > as this is no longer a class that is only specific to GC. > > I also made a minor improvement in the CPU time logging during exit. Since > `CPUTimeUsage` supports more components than just GC I changed the logging > flag to from `gc,cpu` to `cpu` and created a detailed table: > > > [12.517s][info][cpu] === CPU time Statistics > ============================================================= > [12.517s][info][cpu] > CPUs > [12.517s][info][cpu] > s % utilized > [12.517s][info][cpu] Process > [12.517s][info][cpu] Total > 175.7628 100.00 14.0 > [12.517s][info][cpu] VM Thread > 7.0000 3.98 0.6 > [12.517s][info][cpu] Garbage Collection > 72.0000 40.96 5.8 > [12.517s][info][cpu] GC Threads > 70.0000 39.83 5.6 > [12.517s][info][cpu] VM Thread > 1.0000 0.57 0.1 > [12.518s][info][cpu] String Deduplication > 0.0000 0.00 0.0 > [12.518s][info][cpu] > ===================================================================================== > > > Additionally, if CPU time retrieval fails it should not be the caller's > responsibility to log warnings as this would bloat the code unnecessarily. > I've noticed that `os` does log a warning for some methods if they fail so I > continued on this path.
Jonas Norlinder has updated the pull request incrementally with one additional commit since the last revision: Improve robustness ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26621/files - new: https://git.openjdk.org/jdk/pull/26621/files/216ba811..3f552362 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26621&range=03 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26621&range=02-03 Stats: 29 lines in 3 files changed: 23 ins; 0 del; 6 mod Patch: https://git.openjdk.org/jdk/pull/26621.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26621/head:pull/26621 PR: https://git.openjdk.org/jdk/pull/26621