On Wed, 24 Apr 2024 16:04:30 GMT, Serguei Spitsyn <sspit...@openjdk.org> wrote:

> This is a fix of the following JVMTI scalability issue. A closed benchmark 
> with millions of virtual threads shows 3X-4X overhead when a JVMTI agent has 
> been loaded. For instance, this is observable when an app is executed under 
> control of the Oracle Studio `collect` utility.
> For performance analysis, experiments and numbers, please, see the comment 
> below this description.
> 
> The fix is to replace the global counter `_VTMS_transition_count` with the 
> mark bit `_VTMS_transition_mark` in each `JavaThread`'.
> 
> Testing:
>  - Tested with mach5 tiers 1-6

src/hotspot/share/prims/jvmtiEnvBase.cpp line 1638:

> 1636:   // Iterates over all JavaThread's, counts VTMS transitions and 
> restores
> 1637:   // jt->jvmti_thread_state() and jt->jvmti_vthread() for VTMS 
> transition protocol.
> 1638:   void count_transitions_and_correct_jvmti_thread_states() {

The method doesn't count anything anymore.
Rename it to `correct_jvmti_thread_states()`?
Comment needs to be updated too.

src/hotspot/share/prims/jvmtiThreadState.cpp line 501:

> 499:   oop vt = JNIHandles::resolve_external_guard(vthread);
> 500:   java_lang_Thread::set_is_in_VTMS_transition(vt, false);
> 501:   assert(thread->VTMS_transition_mark(), "sanity ed_heck");

Suggestion:

  assert(thread->VTMS_transition_mark(), "sanity check");

src/hotspot/share/runtime/javaThread.hpp line 668:

> 666:   void toggle_is_disable_suspend()               { _is_disable_suspend = 
> !_is_disable_suspend; };
> 667: 
> 668:   bool VTMS_transition_mark()                    { return 
> Atomic::load(&_VTMS_transition_mark); }

Suggestion:

  bool VTMS_transition_mark() const              { return 
Atomic::load(&_VTMS_transition_mark); }

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

PR Review Comment: https://git.openjdk.org/jdk/pull/18937#discussion_r1580096556
PR Review Comment: https://git.openjdk.org/jdk/pull/18937#discussion_r1580101609
PR Review Comment: https://git.openjdk.org/jdk/pull/18937#discussion_r1580108674

Reply via email to