On Thu, 26 Oct 2023 21:01:53 GMT, Jonathan Joo <j...@openjdk.org> wrote:
>> 8315149: Add hsperf counters for CPU time of internal GC threads > > Jonathan Joo has updated the pull request incrementally with one additional > commit since the last revision: > > Remove StringDedup from GC thread list > For tools like AHS that reads these CPU hsperf counters, they could read > these CPU data every 1 to 5 seconds. Okay, these counters can be accessed frequently, but is it necessary for them to provide up-to-date information on every access? If not, what level of delay is acceptable? I assume this depends on how often AHS resizes the heap. (In the Parallel case, I believe the counters can be outdated for the duration of the full-gc.) My primary concern is that the change in G1 is too intrusive -- the logic for tracking/collecting thread-CPU is scattered in many places. Additionally, the situation is expected to worsen in the near future, based on the statement "I can create a separate RFE to make it update more frequently..." Also, why isn't `G1ServiceThread` part of the change? I would expect all subclasses of `ConcurrentGCThread` to be taken into account. Is this omission intentional? Finally, thread-CPU time is something tracked at the OS level, so it's a bit odd that one has to instrument the VM to get that information. > - Looking into the `/proc/` method, it also is not super intuitive as to > which value corresponds to GC time, and it might be difficult to reliably > identify all PIDs of the relevant GC threads. According to https://man7.org/linux/man-pages/man5/proc.5.html, "(14) utime" + "(15) stime %lu" == thread-cpu-time. `cat /proc/<java-pid>/task/*/stat` lists all VM internal threads, including GC, JIT, and etc. ------------- PR Comment: https://git.openjdk.org/jdk/pull/15082#issuecomment-1782969884