RFR: 8315149: Add hsperf counters for CPU time of internal GC threads [v48]

Albert Mingkun Yang ayang at openjdk.org
Thu Nov 30 06:48:20 UTC 2023


On Thu, 30 Nov 2023 02:39:39 GMT, Jonathan Joo <jjoo at openjdk.org> wrote:

>> This two-step update does seem unnecessary, IMO.
>
> I agree that in the case that multiple closures are not active at the same time, we wouldn't have to implement it in this way. However, isn't it possible to have multiple closures active simultaneously, e.g.  vm thread, concurrent mark thread, concurrent refine thread? I think to account for the races there, we can only update the `_gc_total_cpu_time_diff` member variable atomically during these closure destructions, and then publish the actual updated `gc_total` counter at manually specified times via `publish_gc_total_cpu_time()`. If we were to call `publish_gc_total_cpu_time` as part of the thread closure, I believe it would be difficult to prevent races when accessing the underlying counter from the various gc-related threads.
> 
> Or maybe there is another strategy that I'm not seeing?

Both `publish_gc_total_cpu_time` and `~ThreadTotalCPUTimeClosure` are called by the vm-thread inside a safepoint, so there shouldn't be any other threads running simultaneously, I believe.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/15082#discussion_r1410221646


More information about the hotspot-gc-dev mailing list