RFR: 8337511: Implement JEP 404: Generational Shenandoah (Experimental) [v5]
Liang Mao
lmao at openjdk.org
Wed Oct 30 02:12:22 UTC 2024
On Tue, 22 Oct 2024 18:25:53 GMT, William Kemper <wkemper at openjdk.org> wrote:
>> William Kemper has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 492 commits:
>>
>> - Merge remote-tracking branch 'shenandoah/master' into great-genshen-pr-redux
>> - Merge
>> - 8342560: GenShen: Fix confusing method name
>>
>> Reviewed-by: ysr
>> - 8342564: GenShen: Only reference young/old generation names in generational mode
>>
>> Reviewed-by: xpeng, ysr
>> - Merge remote-tracking branch 'jdk/master' into great-genshen-pr-redux
>> - Merge remote-tracking branch 'shenandoah/master' into great-genshen-pr-redux
>> - 8342214: GenShen: Reduce code duplication in shFreeSet with iterator abstraction
>>
>> Reviewed-by: kdnilsen, ysr
>> - 8342239: GenShen: Revert changes in adaptive heuristic to avoid overflow on 32 bit
>>
>> Reviewed-by: ysr
>> - 8342278: GenShen: Move non-generational mode test out of generational test configuration
>>
>> Reviewed-by: ysr
>> - 8342255: GenShen: Remove unnecessary enum initial values
>>
>> Reviewed-by: ysr
>> - ... and 482 more: https://git.openjdk.org/jdk/compare/71583222...2a2aa408
>
> We disabled tiered compilation to force everything to compile through C2 to get more consistent results.
@earthling-amzn ,thanks for providing your options. Looks like disabling pacing would help the score.
-XX:+UseShenandoahGC -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:-TieredCompilation -XX:-ShenandoahPacing -XX:+AlwaysPreTouch -XX:+DisableExplicitGC
I guess 4 cores may not be a target configuration for pauseless GC since generational pauseless GC requires at least 2 concurrent GC threads that already occupy half of CPU resource. I did a rough test on 8 cores and 16 cores according to your options. GenShen doesn't have obvious advantages with 8 cores and Shenandoah seems to outperform genshen significantly with 16 cores. Would you please help verify the result in your environment?
8 cores -Xmx8g -Xms8g:
GenShen:
RUN RESULT: hbIR (max attempted) = 9640, hbIR (settled) = 8050, max-jOPS = 8098, critical-jOPS = 6132
RUN RESULT: hbIR (max attempted) = 8944, hbIR (settled) = 8574, max-jOPS = 7781, critical-jOPS = 6130
Shenandoah:
RUN RESULT: hbIR (max attempted) = 9640, hbIR (settled) = 8050, max-jOPS = 7616, critical-jOPS = 6194
RUN RESULT: hbIR (max attempted) = 9640, hbIR (settled) = 8050, max-jOPS = 7712, critical-jOPS = 6262
16 cores -Xmx20g -Xms20g:
GenShen:
RUN RESULT: hbIR (max attempted) = 19881, hbIR (settled) = 16584, max-jOPS = 17694, critical-jOPS = 13274
RUN RESULT: hbIR (max attempted) = 19881, hbIR (settled) = 18724, max-jOPS = 17694, critical-jOPS = 13445
Shenandoah:
RUN RESULT: hbIR (max attempted) = 23838, hbIR (settled) = 20446, max-jOPS = 18594, critical-jOPS = 15441
RUN RESULT: hbIR (max attempted) = 20138, hbIR (settled) = 19989, max-jOPS = 18728, critical-jOPS = 14967
-------------
PR Comment: https://git.openjdk.org/jdk/pull/21273#issuecomment-2445672323
More information about the shenandoah-dev
mailing list