[jdk17u-dev] RFR: 8310031: Parallel: Implement better work distribution for large object arrays in old gen [v3]

Richard Reingruber rrich at openjdk.org
Thu Mar 7 10:42:59 UTC 2024


On Thu, 7 Mar 2024 09:27:23 GMT, Richard Reingruber <rrich at openjdk.org> wrote:

>> I would like to backport this as a performance bug fix.
>> 
>> We received bug reports from users which have some young pauses of 30s, and even up to 50s (normally <1s) running large Gerrit instances (200GB heap, 100 gc threads).
>> We have tried to tune ParallelGC. Reducing the number of gc threads helps to make the pause time spikes smaller but this makes average pause times longer.
>> 
>> This pr depends on
>> https://github.com/openjdk/jdk17u-dev/pull/2226
>> https://github.com/openjdk/jdk17u-dev/pull/2227
>> https://github.com/openjdk/jdk17u-dev/pull/2228
>> 
>> All hunks except the following 2 applied after a trivial preparation change.
>> The 1st hunk of psCardTable.hpp did not apply because of different context. Resolved by inserting the new lines.
>> The 2nd hunk of psScavenge.cpp did not apply because of different context. Resolved by inserting the new lines.
>> Finally a few trivial changes are required (renaming and the like).
>> 
>> Risk is medium. We've done the downstream backport already many weeks ago.
>> 
>> I've tested on x86_64:
>> jdk:tier1       TEST_VM_OPTS="-XX:+UseParallelGC"
>> langtools:tier1 TEST_VM_OPTS="-XX:+UseParallelGC"
>> 
>> Local CI Testing:
>> The fix passed our CI testing (e.g. 2024-02-25): JTReg tests: tier1-4 of hotspot and jdk. All of Langtools and jaxp. JCK, SPECjvm2008, SPECjbb2015, Renaissance Suite, and SAP specific tests (also with ParallelGC).
>> Testing was done with fastdebug builds on the main platforms and also on Linux/PPC64le.
>
> Richard Reingruber has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains ten commits:
> 
>  - Merge branch 'master' into 8310031_17u_backport
>  - Fix build
>  - 8310031: Parallel: Implement better work distribution for large object arrays in old gen
>    
>    Co-authored-by: Albert Mingkun Yang <ayang at openjdk.org>
>    Reviewed-by: tschatzl, ayang
>  - Prepare
>  - Fix build
>  - 8282094: [REDO] Parallel: Refactor PSCardTable::scavenge_contents_parallel
>    
>    Reviewed-by: iwalulya, tschatzl
>  - 8278893: Parallel: Remove GCWorkerDelayMillis
>    
>    Reviewed-by: ayang, mli
>  - Fix build
>  - 8280030: [REDO] Parallel: More precise boundary in ObjectStartArray::object_starts_in_range
>    
>    Reviewed-by: sjohanss, tschatzl

That last merge commit [bb046068e082e93e93c7e16c954d5dd54d0feb3c](https://github.com/openjdk/jdk17u-dev/pull/2230/commits/bb046068e082e93e93c7e16c954d5dd54d0feb3c) was unfortunately incorrect.

I've merge like this: `git merge -s ours master` but the `ours` strategy effectively discards the changes from master. Correct would be `git merge -X ours master`. This uses the default strategy `ort` with the option `ours`. This discards the version from master only in conflicting hunks. See https://git-scm.com/docs/merge-strategies

I will replace the merge with a correct one (by a force pushing). Hope you are ok with that. My apologies.

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

PR Comment: https://git.openjdk.org/jdk17u-dev/pull/2230#issuecomment-1983229567


More information about the jdk-updates-dev mailing list