RFR: 8320239: add dynamic switch for JvmtiVTMSTransitionDisabler sync protocol

Leonid Mesnik lmesnik at openjdk.org
Thu Nov 16 17:16:32 UTC 2023


On Thu, 16 Nov 2023 12:35:08 GMT, Serguei Spitsyn <sspitsyn 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.

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?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/16688#discussion_r1396061383
PR Review Comment: https://git.openjdk.org/jdk/pull/16688#discussion_r1396071674


More information about the serviceability-dev mailing list