[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-hotspot-runtime-dev
Subject:    Re: RFR: 8305670: Performance regression in LockSupport.unpark with lots of idle threads [v6]
From:       Daniel D. Daugherty <dcubed () openjdk ! org>
Date:       2023-04-28 20:04:26
Message-ID: ClhPLIzVB1BmaJlW0XPuhpSVvympE9mR_-m5WqNAPXU=.3df7c606-693b-4bec-9c7d-60cc40c431bb () github ! com
[Download RAW message or body]

On Fri, 28 Apr 2023 19:42:53 GMT, Daniel D. Daugherty <dcubed@openjdk.org> wrote:

> > Address the performance regression in `LockSupport.unpark()` with the following \
> >                 changes:
> > - Add `FastThreadsListHandle` helper class to threadSMR.[ch]pp for quickly \
> > determining if a JavaThread* is protected by the ThreadsListHandle embedded in \
> >                 the new helper object.
> > - Update `Unsafe_Unpark()` to pass `java_lang_Thread::thread_acquire(thread_oop)` \
> > to a new instance of the `FastThreadsListHandle` object and only do the unpark \
> > work if the target JavaThread* is protected.
> 
> Daniel D. Daugherty has updated the pull request incrementally with six additional \
> commits since the last revision: 
> - Merge JDK-8305670 with code review changes in JDK-8307068.
> - Merge branch 'JDK-8307068' into JDK-8305670
> - Forgot to checkpoint the use of java_lang_Thread::thread_acquire(thread_oop) in \
>                 ThreadsListHandle::cv_internal_thread_to_JavaThread().
> - dholmes CR - follow the foo_acquire() and release_set_foo() convention;
> revert a comment change and reformat.
> - 8307068: store a JavaThread* in the java.lang.Thread object after the JavaThread* \
>                 is added to the main ThreadsList
> - 8307067: remove broken EnableThreadSMRExtraValidityChecks option

The previous version of this patch has been reworked into two dependent patches:
- [JDK-8307067](https://bugs.openjdk.org/browse/JDK-8307067) remove broken \
                EnableThreadSMRExtraValidityChecks option
- https://github.com/openjdk/jdk/pull/13704

and:
- [JDK-8307068](https://bugs.openjdk.org/browse/JDK-8307068) store a JavaThread* in \
                the java.lang.Thread object after the JavaThread* is added to the \
                main ThreadsList
- https://github.com/openjdk/jdk/pull/13723

with this PR now containing just the performance tweak parts of the original fix.

When I refactored the pieces of  \
[JDK-8307068](https://bugs.openjdk.org/browse/JDK-8307068) into that dependent PR, I \
also addressed @dholmes-ora code review comments on that portion of the previous \
patch.

This PR has also been updated to use `java_lang_Thread::thread_acquire()` as needed.

I'm doing the usual Mach5 testing on this patch.

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

PR Comment: https://git.openjdk.org/jdk/pull/13519#issuecomment-1528017277


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic