RFR: 8345732: Provide helpers for using PartialArrayState [v3]

Zhengyu Gu zgu at openjdk.org
Sun Dec 15 18:14:35 UTC 2024


On Fri, 13 Dec 2024 22:24:07 GMT, Kim Barrett <kbarrett at openjdk.org> wrote:

>> Please review this change that introduces two new helper classes to simplify
>> the usage of PartialArrayStates to manage splitting the processing of large
>> object arrays into parallelizable chunks.  G1 and Parallel young GCs are
>> changed to use this new mechanism.
>> 
>> PartialArrayTaskStats is used to collect and report statistics related to
>> array splitting.  It replaces the direct implementation in PSPromotionManager,
>> and is now also used by G1 young GCs.
>> 
>> PartialArraySplitter packages up most of the work involved in splitting and
>> processing tasks. It provides task allocation and release, enqueuing, chunk
>> claiming, and statistics tracking. It does this by encapsulating existing
>> objects and functionality. Using array splitting is mostly reduced to calling
>> the splitter's start function and then calling it's step function to process
>> partial states. This substantially reduces the amount of code for each client
>> to perform this work.
>> 
>> Testing: mach5 tier1-5
>> 
>> Manually ran some test programs with each of G1 and Parallel, with taskqueue
>> stats logging enabled, and checked that the logged statistics looked okay.
>
> Kim Barrett 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 eight additional commits since the last revision:
> 
>  - Merge branch 'master' into pa-splitter
>  - rename splitter.step() => claim()
>  - simplify comments
>  - Merge branch 'master' into pa-splitter
>  - parallel uses PartialArraySplitter
>  - g1 uses PartialArraySplitter
>  - add PartialArraySplitter
>  - add PartialArrayTaskStats

src/hotspot/share/utilities/macros.hpp line 375:

> 373: #define TASKQUEUE_STATS_ONLY(code)
> 374: #endif // TASKQUEUE_STATS
> 375: 

Duplicated definition in `TaskQueue.hpp`
https://github.com/openjdk/jdk/blob/ab1dbd4089a1a15bdf1b6b39994d5b1faacc40ab/src/hotspot/share/gc/shared/taskqueue.hpp#L39-51 should be removed.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/22622#discussion_r1885792871


More information about the hotspot-gc-dev mailing list