On Fri, 1 Dec 2023 22:37:58 GMT, Jonathan Joo <j...@openjdk.org> wrote:

>> I think the ideal approach to simplify this is to support Atomic operation 
>> on a `PerfCounter`.
>> We could either introduce a `PerfAtomicCounter`/`PerfAtomicLongCounter` 
>> class, or perform `Atomic::add()` on the `PerfData::_valuep` pointer. 
>> There's already `PerfData::get_address()`, so we might be able to do:
>> 
>> 
>> Atomic::add((volatile jlong 
>> *)(instance->get_counter(CPUTimeGroups::CPUTimeType::gc_total)->get_address()),
>>  net_cpu_time);
>> 
>> 
>> However, a new class `PerfAtomicCounter`  is likely cleaner. E.g., we may 
>> also want to make `PerfAtomicCounter::sample()` use a CAS. It is probably 
>> better to introduce `PerfAtomicCounter` in a separate RFE later.
>> 
>> Would the `Atomic::add()` with `PerfData::get_address()` approach be OK for 
>> now, or would we rather introduce a lock, or leave the `gc_total` mechanism 
>> as-is and address the out-of-sync-ness in a follow-up RFE?
>> 
>> IMO the out-of-sync-ness problem is minor, because users are likely to 
>> either look at a single `gc_total` counter, or look at each individual GC  
>> CPU counter and disregard `gc_total`.
>
> In the interest of the RDP1 deadline, should we leave improving the sync 
> issues with gc_total to a separate RFE? (Especially given that a "correct" 
> design may take some time to come up with, and that gc_total being slightly 
> out of sync is not a major issue.)

Me and Albert discussed this again and we are ok with handling the `gc_total` 
sync issue as a follow up. Please create the RFE for that. If that would 
include needing a `PerfAtomicCounter`, that would a be its own RFE as well. For 
me I think a lock would be a good enough solution. 

>From our point of view having the counters out of sync for a long period of 
>time (think a long concurrent mark cycle without any young collections 
>updating the total) is not good since it shows that the counters are not 
>incremented in sync. It would also be nice to avoid the two-step updating of 
>the total time, so please try to find time to work on this.

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

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

Reply via email to