RFR: 8311163: Parallel: Improve large object handling during evacuation

Albert Mingkun Yang ayang at openjdk.org
Thu Aug 29 11:03:20 UTC 2024


On Tue, 27 Aug 2024 00:16:10 GMT, Kim Barrett <kbarrett at openjdk.org> wrote:

> Please review this change to ParallelGC young generation collection's handling
> of large objArrays, to now use the infrastructure provided by JDK-8253237 and
> JDK-8337709.  (That's the same infrastructure used by G1 young/mixed
> collections.)
> 
> Testing: mach5 tier1-5

Marked as reviewed by ayang (Reviewer).

Using another box (AMD), the improvement becomes clear.


## baesline

[0.003s][info][gc] Using Parallel
[1.464s][info][gc] GC(0) Pause Young (Allocation Failure) 512M->344M(1963M) 586.065ms
[2.163s][info][gc] GC(1) Pause Young (Allocation Failure) 857M->853M(2304M) 298.110ms
[8.208s][info][gc] GC(2) Pause Young (Allocation Failure) 1707M->1669M(2689M) 2986.103ms
[9.941s][info][gc] GC(3) Pause Full (Allocation Failure) 2516M->91M(2485M) 38.478ms

## new
[0.002s][info][gc] Using Parallel
[1.325s][info][gc] GC(0) Pause Young (Allocation Failure) 512M->355M(1963M) 415.916ms
[1.791s][info][gc] GC(1) Pause Young (Allocation Failure) 867M->858M(2304M) 212.690ms
[5.663s][info][gc] GC(2) Pause Young (Allocation Failure) 1700M->1669M(2689M) 821.355ms
[7.088s][info][gc] GC(3) Pause Full (Allocation Failure) 2510M->91M(2475M) 32.170ms


> So I don't yet know why the change is so beneficial for GC(2).

With `-Xlog:gc*=debug`, I can see an expansion during GC(2) -- I guess because the expansion operation is synchronous, not having any chunks in the task-queue essentially blocks other workers.

src/hotspot/share/gc/parallel/psPromotionManager.cpp line 323:

> 321: }
> 322: 
> 323: void PSPromotionManager::push_objArray(oop old_obj, oop new_obj, size_t obj_size) {

`obj_size` seems unused.

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

PR Review: https://git.openjdk.org/jdk/pull/20720#pullrequestreview-2268387400
PR Comment: https://git.openjdk.org/jdk/pull/20720#issuecomment-2317326172
PR Review Comment: https://git.openjdk.org/jdk/pull/20720#discussion_r1735998641


More information about the hotspot-gc-dev mailing list