RFR: 8330071: GenShen: Allow old to expand again at end of each GC
Kelvin Nilsen
kdnilsen at openjdk.org
Thu Apr 11 15:58:02 UTC 2024
On Thu, 11 Apr 2024 15:20:51 GMT, Kelvin Nilsen <kdnilsen at openjdk.org> wrote:
> This corrects errors in the implementations of max_size_for(OLD) and min_size_for(OLD). These errors were preventing expansion of OLD in preparation for subsequent mixed-evacuation cycles.
It would appear that our existing CI performance pipeline tests are not sufficiently sensitive to failure to expand OLD when necessary to support mixed evacuations. Here's a test that does show good sensitivity.
On existing master, the results are:
Customer Preparation Processing[100000]: P50(295) P95(448) P99(768) P99.9(58408) P99.99(351320) P99.999(414070) P100(424719)
[1145.223s][info ][gc,stats ] 12939 Completed GCs
[1145.223s][info ][gc,stats ] 12894 Successful Concurrent GCs (99.65%)
[1145.223s][info ][gc,stats ] 12 Completed Old GCs (0.09%)
[1145.223s][info ][gc,stats ] 96 mixed
[1145.223s][info ][gc,stats ] 30 Degenerated GCs (0.23%)
[1145.223s][info ][gc,stats ] 4 Full GCs (0.03%)
With this PR, I get:
Customer Preparation Processing[100000]: P50(293) P95(414) P99(484) P99.9(738) P99.99(4977) P99.999(103219) P100(113555)
[1145.299s][info ][gc,stats ] 844 Completed GCs
[1145.299s][info ][gc,stats ] 828 Successful Concurrent GCs (98.10%)
[1145.299s][info ][gc,stats ] 14 Completed Old GCs (1.66%)
[1145.299s][info ][gc,stats ] 238 mixed
[1145.299s][info ][gc,stats ] 2 Degenerated GCs (0.24%)
[1145.299s][info ][gc,stats ] 0 Full GCs (0.00%)
The test is Extremem based:
~/github/shenandoah.allow-old-to-expand-again/build/linux-x86_64-server-release/jdk/bin/java \
-XX:+AlwaysPreTouch -XX:+DisableExplicitGC -Xms3g -Xmx3g \
-XX:+UseShenandoahGC \
-XX:ShenandoahGCMode=generational -XX:+UnlockExperimentalVMOptions \
-XX:-ShenandoahPacing -XX:+UsePerfData \
-XX:ShenandoahGuaranteedYoungGCInterval=12000 \
-Xlog:"gc*=info,ergo" \
-XX:+UnlockDiagnosticVMOptions \
-XX:-UseCompressedOops -XX:-UseCompressedClassPointers \
-XX:+UnlockExperimentalVMOptions \
-jar ~/github/heapothesys/Extremem/target/extremem-1.0-SNAPSHOT.jar \
-dInitializationDelay=60s -dDictionarySize=400000 -dNumCustomers=350000 \
-dNumProducts=12000 -dCustomerThreads=200 -dCustomerPeriod=2s -dCustomerThinkTime=1s \
-dKeywordSearchCount=4 -dServerThreads=5 -dServerPeriod=1s -dProductNameLength=10 \
-dBrowsingHistoryQueueCount=5 \
-dSalesTransactionQueueCount=5 \
-dProductDescriptionLength=64 -dProductReplacementPeriod=5s -dProductReplacementCount=3500 \
-dCustomerReplacementPeriod=5s -dCustomerReplacementCount=4000 -dBrowsingExpiration=1m \
-dPhasedUpdates=true \
-dPhasedUpdateInterval=30s \
-dSimulationDuration=18m -dResponseTimeMeasurements=100000
-------------
PR Comment: https://git.openjdk.org/shenandoah/pull/421#issuecomment-2050017928
More information about the shenandoah-dev
mailing list