RFR: 8320239: add dynamic switch for JvmtiVTMSTransitionDisabler sync protocol

Serguei Spitsyn sspitsyn at openjdk.org
Thu Nov 16 18:57:32 UTC 2023


On Thu, 16 Nov 2023 17:05:17 GMT, Leonid Mesnik <lmesnik at openjdk.org> wrote:

>> This is an update for a performance/scalability enhancement.
>> 
>> The `JvmtiVTMSTransitionDisabler`sync protocol is on a performance critical path of the virtual threads mount state transitions (VTMS transitions). It has a noticeable performance overhead (about 10%) which contributes to the combined JVMTI performance overhead when Java apps are executed with loaded JVMTI agents.
>> 
>> Please, also see another/related performance issue which contributes around 70% of total performance overhead:
>> [8308614](https://bugs.openjdk.org/browse/JDK-8308614): Enabling JVMTI ClassLoad event slows down vthread creation by factor 10
>> 
>> Testing:
>>  - Ran mach5 tiers 1-6 with no regressions noticed.
>
> src/hotspot/share/prims/jvmtiThreadState.cpp line 430:
> 
>> 428:     assert(!thread->is_in_VTMS_transition(), "VTMS_transition sanity check");
>> 429:     thread->set_is_in_VTMS_transition(true);
>> 430:      java_lang_Thread::set_is_in_VTMS_transition(vt, true);
> 
> indentation is incorrect.

Thank you. Fixed now.

> src/hotspot/share/prims/jvmtiThreadState.hpp line 86:
> 
>> 84:   static volatile bool _SR_mode;                         // there is an active suspender or resumer
>> 85:   static volatile int _VTMS_transition_count;            // current number of VTMS transitions
>> 86:   static int  _sync_protocol_enabled_count;              // current number of JvmtiVTMSTransitionDisablers enabled sync protocol
> 
> The _sync_protocol_enabled_count and  _sync_protocol_enabled_permanently are read/updated in different threads. How access to them is protected from racing? Might be make sense to add this info in comment?

Good catch, thanks. My initial intention was to make them volatile with Atomic load/store/update. Fixed now.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/16688#discussion_r1396191582
PR Review Comment: https://git.openjdk.org/jdk/pull/16688#discussion_r1396194416


More information about the hotspot-dev mailing list