RFR: 8256265: G1: Improve parallelism in regions that failed evacuation [v18]
Hamlin Li
mli at openjdk.java.net
Wed Apr 6 06:31:26 UTC 2022
> Currently G1 assigns a thread per failed evacuated region. This can in effect serialize the whole process as often (particularly with region pinning) there is only one region to fix up.
>
> This patch tries to improve parallelism when walking over the regions in chunks
>
> Latest implementation scans regions in chunks to bring parallelism, it's based on JDK-8278917 which changes to uses prev bitmap to mark evacuation failure objs.
>
> Here's the summary of performance data based on latest implementation, basically, it brings better and stable performance than baseline at "Post Evacuate Cleanup 1/remove self forwardee" phase. (Although some regression is spotted when calculate the results in geomean, becuase one pause time from baseline is far too small than others.)
>
> The performance benefit trend is:
> - pause time (Post Evacuate Cleanup 1) is decreased from 76.79% to 2.28% for average time, from 71.61% to 3.04% for geomean, when G1EvacuationFailureALotCSetPercent is changed from 2 to 90 (-XX:ParallelGCThreads=8)
> - pause time (Post Evacuate Cleanup 1) is decreased from 63.84% to 15.16% for average time, from 55.41% to 12.45% for geomean, when G1EvacuationFailureALotCSetPercent is changed from 2 to 90 (-XX:ParallelGCThreads=<default=123>)
> ( Other common Evacuation Failure configurations are:
> -XX:+G1EvacuationFailureALot -XX:G1EvacuationFailureALotInterval=0 -XX:G1EvacuationFailureALotCount=0 )
>
> For more detailed performance data, please check the related bug.
Hamlin Li has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 25 commits:
- Merge branch 'master' into parallelize-evac-failure-in-bm
- some cleanup
- Remove unnecessary method
- Move prepare_regions to post cleanup 1 phase
- Fix compilation error
- Thomas review
- Albert review
- move 'chunks per region' log
- Albert review
- Thomas & Albert review
- ... and 15 more: https://git.openjdk.java.net/jdk/compare/741be461...4b672e66
-------------
Changes: https://git.openjdk.java.net/jdk/pull/7047/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=7047&range=17
Stats: 576 lines in 15 files changed: 487 ins; 31 del; 58 mod
Patch: https://git.openjdk.java.net/jdk/pull/7047.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/7047/head:pull/7047
PR: https://git.openjdk.java.net/jdk/pull/7047
More information about the hotspot-gc-dev
mailing list