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

Kim Barrett kbarrett at openjdk.org
Sat Aug 31 01:16:24 UTC 2024


On Thu, 29 Aug 2024 11:00:19 GMT, Albert Mingkun Yang <ayang 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
>
> 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.

Thanks for reviews @albertnetymk and @tschatzl

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

PR Comment: https://git.openjdk.org/jdk/pull/20720#issuecomment-2322646225


More information about the hotspot-gc-dev mailing list