RFR: 8330969: scalability issue with loaded JVMTI agent [v2]

Serguei Spitsyn sspitsyn at openjdk.org
Tue Apr 30 01:52:09 UTC 2024


On Fri, 26 Apr 2024 19:34:55 GMT, Chris Plummer <cjplummer at openjdk.org> wrote:

>> Serguei Spitsyn has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   review: fixed minor issues: renamed function, corrected comment, removed typo in assert
>
> src/hotspot/share/prims/jvmtiThreadState.cpp line 366:
> 
>> 364:           attempts--;
>> 365:         }
>> 366:         DEBUG_ONLY(if (attempts == 0) break;)
> 
> Previously `_VTMS_transition_count` considered all threads at the same time. Now you are iterating through the threads and looking at a flag in each one. Is it guaranteed that once the `_VTMS_transition_mark` flag has been verified not to be set in a thread it won't get set while still iterating in the threads loop?

Thank you for the comment. It is thinking in a right direction.
Each `JavaThread` set the `VTM_transition_mark` only once and then checks for disable counters:
 - `_VTMS_transition_disable_for_all_count`
 - `java_lang_Thread::VTMS_transition_disable_count(vth())`
 
If any of the disable counters is not zero then each `JavaThread` clears the optimistically set mark and continues under protection of the `JvmtiVTMSTransition_lock`.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/18937#discussion_r1584025182


More information about the serviceability-dev mailing list