RFR: 8336707: Contention of ForkJoinPool grows when stealing works [v21]

Viktor Klang vklang at openjdk.org
Mon Nov 11 15:15:19 UTC 2024


On Sun, 10 Nov 2024 17:51:43 GMT, Doug Lea <dl at openjdk.org> wrote:

>> This addresses tendencies in previous update to increase fencing, scanning, and signalling that can increase contention, and slow down performance especially on ARM platforms. It also uses more ARM-friendly constructions to reduce overhead (leading to several changes that all of the same form),
>
> Doug Lea has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 40 additional commits since the last revision:
> 
>  - Merge branch 'openjdk:master' into JDK-8336707
>  - Minor improvements
>  - Merge branch 'openjdk:master' into JDK-8336707
>  - Add CLEANED runState
>  - Merge branch 'openjdk:master' into JDK-8336707
>  - More shutdown streamlining
>  - Don't report termination while cancellations in progress
>  - Reduce read contention
>  - Merge branch 'openjdk:master' into JDK-8336707
>  - Reduce shutdown overhead and contention
>  - ... and 30 more: https://git.openjdk.org/jdk/compare/c6713e65...4db28137

src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java line 414:

> 412:      * roles, as lockable, versioned counters. Field runState also
> 413:      * includes monotonic event bits (SHUTDOWN, STOP, CLEANED (when
> 414:      * all queues are knowm to be empty after stopping) and

Suggestion:

     * all queues are known to be empty after stopping) and

src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java line 662:

> 660:      * tasks until runState is marked as CLEANED (staggering queues
> 661:      * and backing off on interference to avoid contention while doing
> 662:      * so-- see method cleanQueues). These actions race with

Suggestion:

     * so--see method cleanQueues). These actions race with

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

PR Review Comment: https://git.openjdk.org/jdk/pull/21507#discussion_r1836824631
PR Review Comment: https://git.openjdk.org/jdk/pull/21507#discussion_r1836828143


More information about the core-libs-dev mailing list