RFR: 8256265 G1: Improve parallelism in regions that failed evacuation

Kirk Pepperdine kirk at kodewerk.com
Thu Dec 2 01:56:42 UTC 2021


Hi Hamlin,

Am I to understand that these benchmarks were running for 3-5 seconds?

Kind regards,
Kirk Pepperdine


> On Dec 1, 2021, at 12:03 AM, Hamlin Li <mli at openjdk.java.net> wrote:
> 
> 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.
> Try to improve the parallelsim when walking over the regions by 
> 
> - first, split a region into tasks;
> - then, process these task in parallel and load balance among GC threads;
> - last, necessary cleanup
> 
> The perf test based on lastest implementation + JDK-8277736 shows that:
> 
> - when ParallelGCThreads=32, when G1EvacuationFailureALotCSetPercent <= 50, the parallelism bring more benefit than regression;
> - when ParallelGCThreads=128, whatever G1EvacuationFailureALotCSetPercent is, the parallelism bring more benefit than regression;
> 
> For detailed perf test result, please check:
> 
> - https://bugs.openjdk.java.net/secure/attachment/97227/parallel.evac.failure-threads.32.png
> - https://bugs.openjdk.java.net/secure/attachment/97228/parallel.evac.failure-threads.128.png
> 
> NOTE: load balance part of code is almost same as G1ParScanThreadState, if necessary and feasible, consider to refactor this part into a shared code base.
> 
> -------------
> 
> Commit messages:
> - Adjust worker cost by a factor; initialize task queues set and terminator threads by active workers
> - Fix wrong merge
> - Merge with master
> - Remove and merge code of G1ParRemoveSelfForwardPtrsTask into RemoveSelfForwardPtrsTask
> - Fix crashes in ~G1GCParPhaseTimesTracker(), G1PreRemoveSelfForwardClosure::do_heap_region, G1CollectedHeap::par_iterate_regions_array()=>~StubRoutines::atomic entry points; Refine comments
> - Fix inconsistent length between task queues and terminator
> - Fix crash when heap verification; Fix compilation error; Refine comments
> - Initial commit
> 
> Changes: https://git.openjdk.java.net/jdk/pull/6627/files
> Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=6627&range=00
>  Issue: https://bugs.openjdk.java.net/browse/JDK-8256265
>  Stats: 1055 lines in 22 files changed: 698 ins; 280 del; 77 mod
>  Patch: https://git.openjdk.java.net/jdk/pull/6627.diff
>  Fetch: git fetch https://git.openjdk.java.net/jdk pull/6627/head:pull/6627
> 
> PR: https://git.openjdk.java.net/jdk/pull/6627




More information about the hotspot-gc-dev mailing list