8223447: Stabilize gc/shenandoah/TestStringDedupStress test
Reviewed-by: rkennke
This commit is contained in:
parent
c222e1aad0
commit
0284208ab3
@ -30,60 +30,74 @@
|
|||||||
* @modules java.base/jdk.internal.misc:open
|
* @modules java.base/jdk.internal.misc:open
|
||||||
* @modules java.base/java.lang:open
|
* @modules java.base/java.lang:open
|
||||||
* java.management
|
* java.management
|
||||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx512M -Xlog:gc+stats
|
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx1g -Xlog:gc+stats
|
||||||
* -DtargetStrings=3000000
|
* -DtargetStrings=3000000
|
||||||
|
* -Xlog:gc
|
||||||
* TestStringDedupStress
|
* TestStringDedupStress
|
||||||
*
|
*
|
||||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx512M -Xlog:gc+stats
|
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx1g -Xlog:gc+stats
|
||||||
* -XX:ShenandoahGCHeuristics=aggressive -DtargetStrings=2000000
|
* -XX:ShenandoahGCHeuristics=aggressive -DtargetStrings=2000000
|
||||||
|
* -Xlog:gc
|
||||||
* TestStringDedupStress
|
* TestStringDedupStress
|
||||||
*
|
*
|
||||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx512M -Xlog:gc+stats
|
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx1g -Xlog:gc+stats
|
||||||
* -XX:ShenandoahGCHeuristics=aggressive -XX:+ShenandoahOOMDuringEvacALot -DtargetStrings=2000000
|
* -XX:ShenandoahGCHeuristics=aggressive -XX:+ShenandoahOOMDuringEvacALot -DtargetStrings=2000000
|
||||||
|
* -Xlog:gc
|
||||||
* TestStringDedupStress
|
* TestStringDedupStress
|
||||||
*
|
*
|
||||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx512M -Xlog:gc+stats
|
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx1g -Xlog:gc+stats
|
||||||
* -XX:ShenandoahGCHeuristics=static -DtargetStrings=4000000
|
* -XX:ShenandoahGCHeuristics=static -DtargetStrings=4000000
|
||||||
|
* -Xlog:gc
|
||||||
* TestStringDedupStress
|
* TestStringDedupStress
|
||||||
*
|
*
|
||||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx512M -Xlog:gc+stats
|
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx1g -Xlog:gc+stats
|
||||||
* -XX:ShenandoahGCHeuristics=compact
|
* -XX:ShenandoahGCHeuristics=compact
|
||||||
|
* -Xlog:gc
|
||||||
* TestStringDedupStress
|
* TestStringDedupStress
|
||||||
*
|
*
|
||||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx512M -Xlog:gc+stats
|
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx1g -Xlog:gc+stats
|
||||||
* -XX:ShenandoahGCHeuristics=passive -XX:+ShenandoahDegeneratedGC -DtargetOverwrites=40000000
|
* -XX:ShenandoahGCHeuristics=passive -XX:+ShenandoahDegeneratedGC
|
||||||
|
* -Xlog:gc
|
||||||
* TestStringDedupStress
|
* TestStringDedupStress
|
||||||
*
|
*
|
||||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx512M -Xlog:gc+stats
|
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx1g -Xlog:gc+stats
|
||||||
* -XX:ShenandoahGCHeuristics=passive -XX:-ShenandoahDegeneratedGC -DtargetOverwrites=40000000
|
* -XX:ShenandoahGCHeuristics=passive -XX:-ShenandoahDegeneratedGC
|
||||||
|
* -Xlog:gc
|
||||||
* TestStringDedupStress
|
* TestStringDedupStress
|
||||||
*
|
*
|
||||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx512M -Xlog:gc+stats
|
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx1g -Xlog:gc+stats
|
||||||
* -XX:ShenandoahGCHeuristics=traversal
|
* -XX:ShenandoahGCHeuristics=traversal
|
||||||
|
* -Xlog:gc
|
||||||
* TestStringDedupStress
|
* TestStringDedupStress
|
||||||
*
|
*
|
||||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx512M -Xlog:gc+stats
|
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx1g -Xlog:gc+stats
|
||||||
* -XX:ShenandoahUpdateRefsEarly=off -DtargetStrings=3000000
|
* -XX:ShenandoahUpdateRefsEarly=off -DtargetStrings=3000000
|
||||||
|
* -Xlog:gc
|
||||||
* TestStringDedupStress
|
* TestStringDedupStress
|
||||||
*
|
*
|
||||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx512M -Xlog:gc+stats
|
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx1g -Xlog:gc+stats
|
||||||
* -XX:ShenandoahGCHeuristics=compact -XX:ShenandoahUpdateRefsEarly=off -DtargetStrings=2000000
|
* -XX:ShenandoahGCHeuristics=compact -XX:ShenandoahUpdateRefsEarly=off -DtargetStrings=2000000
|
||||||
|
* -Xlog:gc
|
||||||
* TestStringDedupStress
|
* TestStringDedupStress
|
||||||
*
|
*
|
||||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx512M -Xlog:gc+stats
|
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx1g -Xlog:gc+stats
|
||||||
* -XX:ShenandoahGCHeuristics=aggressive -XX:ShenandoahUpdateRefsEarly=off -DtargetStrings=2000000
|
* -XX:ShenandoahGCHeuristics=aggressive -XX:ShenandoahUpdateRefsEarly=off -DtargetStrings=2000000
|
||||||
|
* -Xlog:gc
|
||||||
* TestStringDedupStress
|
* TestStringDedupStress
|
||||||
*
|
*
|
||||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx512M -Xlog:gc+stats
|
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx1g -Xlog:gc+stats
|
||||||
* -XX:ShenandoahGCHeuristics=static -XX:ShenandoahUpdateRefsEarly=off -DtargetOverwrites=4000000
|
* -XX:ShenandoahGCHeuristics=static -XX:ShenandoahUpdateRefsEarly=off
|
||||||
|
* -Xlog:gc
|
||||||
* TestStringDedupStress
|
* TestStringDedupStress
|
||||||
*
|
*
|
||||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx512M -Xlog:gc+stats
|
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx1g -Xlog:gc+stats
|
||||||
* -XX:ShenandoahGCHeuristics=aggressive -XX:ShenandoahUpdateRefsEarly=off -XX:+ShenandoahOOMDuringEvacALot -DtargetStrings=2000000
|
* -XX:ShenandoahGCHeuristics=aggressive -XX:ShenandoahUpdateRefsEarly=off -XX:+ShenandoahOOMDuringEvacALot -DtargetStrings=2000000
|
||||||
|
* -Xlog:gc
|
||||||
* TestStringDedupStress
|
* TestStringDedupStress
|
||||||
*
|
*
|
||||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx512M -Xlog:gc+stats
|
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+UseStringDeduplication -Xmx1g -Xlog:gc+stats
|
||||||
* -XX:ShenandoahGCHeuristics=traversal -XX:+ShenandoahOOMDuringEvacALot -DtargetStrings=2000000
|
* -XX:ShenandoahGCHeuristics=traversal -XX:+ShenandoahOOMDuringEvacALot -DtargetStrings=2000000
|
||||||
|
* -Xlog:gc
|
||||||
* TestStringDedupStress
|
* TestStringDedupStress
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -97,9 +111,9 @@ public class TestStringDedupStress {
|
|||||||
private static Field valueField;
|
private static Field valueField;
|
||||||
private static Unsafe unsafe;
|
private static Unsafe unsafe;
|
||||||
|
|
||||||
private static long TARGET_STRINGS = Long.getLong("targetStrings", 2_500_000);
|
private static final int TARGET_STRINGS = Integer.getInteger("targetStrings", 2_500_000);
|
||||||
private static long TARGET_OVERWRITES = Long.getLong("targetOverwrites", 600_000);
|
|
||||||
private static final long MAX_REWRITE_GC_CYCLES = 6;
|
private static final long MAX_REWRITE_GC_CYCLES = 6;
|
||||||
|
private static final long MAX_REWRITE_TIME = 30*1000; // ms
|
||||||
|
|
||||||
private static final int UNIQUE_STRINGS = 20;
|
private static final int UNIQUE_STRINGS = 20;
|
||||||
|
|
||||||
@ -151,8 +165,8 @@ public class TestStringDedupStress {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int verifyDedepString(ArrayList<StringAndId> strs) {
|
private static int verifyDedupString(ArrayList<StringAndId> strs) {
|
||||||
HashMap<Object, StringAndId> seen = new HashMap<>();
|
Map<Object, StringAndId> seen = new HashMap<>(TARGET_STRINGS*2);
|
||||||
int total = 0;
|
int total = 0;
|
||||||
int dedup = 0;
|
int dedup = 0;
|
||||||
|
|
||||||
@ -195,14 +209,16 @@ public class TestStringDedupStress {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Generate roughly TARGET_STRINGS strings, only UNIQUE_STRINGS are unique
|
// Generate roughly TARGET_STRINGS strings, only UNIQUE_STRINGS are unique
|
||||||
long genIters = TARGET_STRINGS / UNIQUE_STRINGS;
|
int genIters = TARGET_STRINGS / UNIQUE_STRINGS;
|
||||||
for (long index = 0; index < genIters; index++) {
|
for (int index = 0; index < genIters; index++) {
|
||||||
generateStrings(astrs, UNIQUE_STRINGS);
|
generateStrings(astrs, UNIQUE_STRINGS);
|
||||||
}
|
}
|
||||||
|
|
||||||
long cycleBeforeRewrite = gcCycleMBean.getCollectionCount();
|
long cycleBeforeRewrite = gcCycleMBean.getCollectionCount();
|
||||||
|
long timeBeforeRewrite = System.currentTimeMillis();
|
||||||
|
|
||||||
for (long loop = 1; loop < TARGET_OVERWRITES; loop++) {
|
long loop = 1;
|
||||||
|
while (true) {
|
||||||
int arrSize = astrs.size();
|
int arrSize = astrs.size();
|
||||||
int index = rn.nextInt(arrSize);
|
int index = rn.nextInt(arrSize);
|
||||||
StringAndId item = astrs.get(index);
|
StringAndId item = astrs.get(index);
|
||||||
@ -210,13 +226,18 @@ public class TestStringDedupStress {
|
|||||||
item.str = "Unique String " + n;
|
item.str = "Unique String " + n;
|
||||||
item.id = n;
|
item.id = n;
|
||||||
|
|
||||||
if (loop % 1000 == 0) {
|
if (loop++ % 1000 == 0) {
|
||||||
// enough GC cycles for rewritten strings to be deduplicated
|
// enough GC cycles for rewritten strings to be deduplicated
|
||||||
if (gcCycleMBean.getCollectionCount() - cycleBeforeRewrite >= MAX_REWRITE_GC_CYCLES) {
|
if (gcCycleMBean.getCollectionCount() - cycleBeforeRewrite >= MAX_REWRITE_GC_CYCLES) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// enough time is spent waiting for GC to happen
|
||||||
|
if (System.currentTimeMillis() - timeBeforeRewrite >= MAX_REWRITE_TIME) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
verifyDedepString(astrs);
|
verifyDedupString(astrs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user