Skip to content

Commit 51801bd

Browse files
committed
#204 support new phases for G1 in JDK11
1 parent 117e8b9 commit 51801bd

File tree

3 files changed

+42
-2
lines changed

3 files changed

+42
-2
lines changed

src/main/java/com/tagtraum/perf/gcviewer/model/AbstractGCEvent.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -674,6 +674,8 @@ public String toString() {
674674
public static final Type UJL_G1_PHASE_EVACUATE_COLLECTION_SET = new Type("Evacuate Collection Set", Generation.YOUNG, Concurrency.SERIAL, GcPattern.GC_PAUSE);
675675
public static final Type UJL_G1_PHASE_POST_EVACUATE_COLLECTION_SET = new Type("Post Evacuate Collection Set", Generation.YOUNG, Concurrency.SERIAL, GcPattern.GC_PAUSE);
676676
public static final Type UJL_G1_PHASE_OTHER = new Type("Other", Generation.YOUNG, Concurrency.SERIAL, GcPattern.GC_PAUSE);
677+
public static final Type UJL_G1_PHASE_PREPARE_FOR_COMPACTION = new Type("Phase 2: Prepare for compaction", Generation.YOUNG, Concurrency.SERIAL, GcPattern.GC_PAUSE);
678+
public static final Type UJL_G1_PHASE_COMPACT_HEAP = new Type("Phase 4: Compact heap", Generation.YOUNG, Concurrency.SERIAL, GcPattern.GC_PAUSE);
677679

678680
// unified jvm logging shenandoah event types
679681
public static final Type UJL_SHEN_INIT_MARK = new Type("Pause Init Mark", Generation.TENURED, Concurrency.SERIAL, GcPattern.GC_PAUSE);

src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderUJLG1.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ public void testParseGcWithPhases() throws Exception {
221221

222222
assertThat("number of warnings", handler.getCount(), is(0));
223223
assertThat("number of events", model.size(), is(1));
224-
assertThat("event type", model.get(0).getExtendedType().getType(), is(Type.UJL_PAUSE_YOUNG));
224+
assertThat("event type", model.get(0).getExtendedType().getType(), is(Type.UJL_G1_PAUSE_YOUNG));
225225
assertThat("event pause", model.get(0).getPause(), closeTo(0.007033, 0.0000001));
226226

227227
assertThat("phases", model.getGcEventPhases().size(), is(4));

src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderUJL11G1.java renamed to src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderUJLG1JDK11.java

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
/**
2020
* Test unified java logging G1 algorithm in OpenJDK 11
2121
*/
22-
public class TestDataReaderUJL11G1 {
22+
public class TestDataReaderUJLG1JDK11 {
2323
private GCModel getGCModelFromLogFile(String fileName) throws IOException {
2424
return UnittestHelper.getGCModelFromLogFile(fileName, FOLDER.OPENJDK_UJL, DataReaderUnifiedJvmLogging.class);
2525
}
@@ -96,4 +96,42 @@ public void testDefaultsPauseYoungMixed() throws Exception {
9696
assertThat("total heap", model.get(0).getTotal(), is(128 * 1024));
9797
}
9898

99+
@Test
100+
public void testFullGcWithPhases() throws Exception {
101+
TestLogHandler handler = new TestLogHandler();
102+
handler.setLevel(Level.WARNING);
103+
GCResource gcResource = new GcResourceFile("byteArray");
104+
gcResource.getLogger().addHandler(handler);
105+
InputStream in = new ByteArrayInputStream(
106+
("[1.204s][info][gc,task ] GC(15) Using 3 workers of 4 for full compaction\n" +
107+
"[1.204s][info][gc,start ] GC(15) Pause Full (G1 Evacuation Pause)\n" +
108+
"[1.204s][info][gc,phases,start] GC(15) Phase 1: Mark live objects\n" +
109+
"[1.207s][info][gc,stringtable ] GC(15) Cleaned string and symbol table, strings: 7381 processed, 70 removed, symbols: 49128 processed, 10 removed\n" +
110+
"[1.207s][info][gc,phases ] GC(15) Phase 1: Mark live objects 3.036ms\n" +
111+
"[1.207s][info][gc,phases,start] GC(15) Phase 2: Prepare for compaction\n" +
112+
"[1.208s][info][gc,phases ] GC(15) Phase 2: Prepare for compaction 0.808ms\n" +
113+
"[1.208s][info][gc,phases,start] GC(15) Phase 3: Adjust pointers\n" +
114+
"[1.210s][info][gc,phases ] GC(15) Phase 3: Adjust pointers 1.916ms\n" +
115+
"[1.210s][info][gc,phases,start] GC(15) Phase 4: Compact heap\n" +
116+
"[1.223s][info][gc,phases ] GC(15) Phase 4: Compact heap 13.268ms\n" +
117+
"[1.224s][info][gc,heap ] GC(15) Eden regions: 0->0(17)\n" +
118+
"[1.224s][info][gc,heap ] GC(15) Survivor regions: 0->0(1)\n" +
119+
"[1.224s][info][gc,heap ] GC(15) Old regions: 128->62\n" +
120+
"[1.224s][info][gc,heap ] GC(15) Humongous regions: 0->0\n" +
121+
"[1.224s][info][gc,metaspace ] GC(15) Metaspace: 15025K->15025K(1062912K)\n" +
122+
"[1.224s][info][gc ] GC(15) Pause Full (G1 Evacuation Pause) 127M->59M(128M) 20.596ms\n" +
123+
"[1.225s][info][gc,cpu ] GC(15) User=0.05s Sys=0.00s Real=0.02s\n" +
124+
"[1.225s][info][safepoint ] Leaving safepoint region\n" +
125+
"[1.225s][info][safepoint ] Total time for which application threads were stopped: 0.0222150 seconds, Stopping threads took: 0.0000452 seconds\n")
126+
.getBytes());
127+
128+
DataReader reader = new DataReaderUnifiedJvmLogging(gcResource, in);
129+
GCModel model = reader.read();
130+
131+
assertThat("number of warnings", handler.getCount(), is(0));
132+
assertThat("number of events", model.size(), is(1));
133+
assertThat("total heap", model.get(0).getTotal(), is(128 * 1024));
134+
135+
}
136+
99137
}

0 commit comments

Comments
 (0)