Skip to content

Commit 117e8b9

Browse files
committed
#204 add new "Pause Young (G1 Evacuation Pause)" event
1 parent 6a76d89 commit 117e8b9

File tree

2 files changed

+100
-0
lines changed

2 files changed

+100
-0
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -660,6 +660,7 @@ public String toString() {
660660
public static final Type UJL_CMS_CONCURRENT_OLD = new Type("Old", Generation.TENURED, Concurrency.CONCURRENT, GcPattern.GC_MEMORY);
661661

662662
// unified jvm logging g1 event types
663+
public static final Type UJL_G1_PAUSE_YOUNG = new Type("Pause Young (G1 Evacuation Pause)", Generation.YOUNG, Concurrency.SERIAL, GcPattern.GC_MEMORY_PAUSE);
663664
public static final Type UJL_G1_PAUSE_MIXED = new Type("Pause Mixed", Generation.TENURED, Concurrency.SERIAL, GcPattern.GC_MEMORY_PAUSE);
664665
public static final Type UJL_G1_TO_SPACE_EXHAUSTED = new Type("To-space exhausted", Generation.YOUNG, Concurrency.SERIAL, GcPattern.GC);
665666
public static final Type UJL_G1_CONCURRENT_CYCLE = new Type("Concurrent Cycle", Generation.TENURED, Concurrency.CONCURRENT, GcPattern.GC_PAUSE);
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
package com.tagtraum.perf.gcviewer.imp;
2+
3+
import static org.hamcrest.Matchers.closeTo;
4+
import static org.hamcrest.Matchers.is;
5+
import static org.junit.Assert.assertThat;
6+
7+
import java.io.ByteArrayInputStream;
8+
import java.io.IOException;
9+
import java.io.InputStream;
10+
import java.util.logging.Level;
11+
12+
import com.tagtraum.perf.gcviewer.UnittestHelper;
13+
import com.tagtraum.perf.gcviewer.UnittestHelper.FOLDER;
14+
import com.tagtraum.perf.gcviewer.model.GCModel;
15+
import com.tagtraum.perf.gcviewer.model.GCResource;
16+
import com.tagtraum.perf.gcviewer.model.GcResourceFile;
17+
import org.junit.Test;
18+
19+
/**
20+
* Test unified java logging G1 algorithm in OpenJDK 11
21+
*/
22+
public class TestDataReaderUJL11G1 {
23+
private GCModel getGCModelFromLogFile(String fileName) throws IOException {
24+
return UnittestHelper.getGCModelFromLogFile(fileName, FOLDER.OPENJDK_UJL, DataReaderUnifiedJvmLogging.class);
25+
}
26+
27+
@Test
28+
public void testDefaultsPauseYoungNormal() throws Exception {
29+
TestLogHandler handler = new TestLogHandler();
30+
handler.setLevel(Level.WARNING);
31+
GCResource gcResource = new GcResourceFile("byteArray");
32+
gcResource.getLogger().addHandler(handler);
33+
InputStream in = new ByteArrayInputStream(
34+
("[1.113s][info][gc] GC(4) Pause Young (Normal) (G1 Evacuation Pause) 70M->70M(128M) 12.615ms")
35+
.getBytes());
36+
37+
DataReader reader = new DataReaderUnifiedJvmLogging(gcResource, in);
38+
GCModel model = reader.read();
39+
40+
assertThat("number of warnings", handler.getCount(), is(0));
41+
assertThat("number of events", model.size(), is(1));
42+
assertThat("pause", model.get(0).getPause(), closeTo(0.012615, 0.00000001));
43+
}
44+
45+
@Test
46+
public void testDefaultsPauseYoungConcurrentStart() throws Exception {
47+
TestLogHandler handler = new TestLogHandler();
48+
handler.setLevel(Level.WARNING);
49+
GCResource gcResource = new GcResourceFile("byteArray");
50+
gcResource.getLogger().addHandler(handler);
51+
InputStream in = new ByteArrayInputStream(
52+
("[1.155s][info][gc] GC(5) Pause Young (Concurrent Start) (G1 Evacuation Pause) 84M->79M(128M) 5.960ms")
53+
.getBytes());
54+
55+
DataReader reader = new DataReaderUnifiedJvmLogging(gcResource, in);
56+
GCModel model = reader.read();
57+
58+
assertThat("number of warnings", handler.getCount(), is(0));
59+
assertThat("number of events", model.size(), is(1));
60+
assertThat("heap before", model.get(0).getPreUsed(), is(84 * 1024));
61+
}
62+
63+
@Test
64+
public void testDefaultsPauseYoungPrepareMixed() throws Exception {
65+
TestLogHandler handler = new TestLogHandler();
66+
handler.setLevel(Level.WARNING);
67+
GCResource gcResource = new GcResourceFile("byteArray");
68+
gcResource.getLogger().addHandler(handler);
69+
InputStream in = new ByteArrayInputStream(
70+
("[2.649s][info][gc] GC(218) Pause Young (Prepare Mixed) (G1 Evacuation Pause) 81M->79M(128M) 1.322ms")
71+
.getBytes());
72+
73+
DataReader reader = new DataReaderUnifiedJvmLogging(gcResource, in);
74+
GCModel model = reader.read();
75+
76+
assertThat("number of warnings", handler.getCount(), is(0));
77+
assertThat("number of events", model.size(), is(1));
78+
assertThat("heap after", model.get(0).getPostUsed(), is(79 * 1024));
79+
}
80+
81+
@Test
82+
public void testDefaultsPauseYoungMixed() throws Exception {
83+
TestLogHandler handler = new TestLogHandler();
84+
handler.setLevel(Level.WARNING);
85+
GCResource gcResource = new GcResourceFile("byteArray");
86+
gcResource.getLogger().addHandler(handler);
87+
InputStream in = new ByteArrayInputStream(
88+
("[2.651s][info][gc] GC(219) Pause Young (Mixed) (G1 Evacuation Pause) 84M->83M(128M) 1.599ms")
89+
.getBytes());
90+
91+
DataReader reader = new DataReaderUnifiedJvmLogging(gcResource, in);
92+
GCModel model = reader.read();
93+
94+
assertThat("number of warnings", handler.getCount(), is(0));
95+
assertThat("number of events", model.size(), is(1));
96+
assertThat("total heap", model.get(0).getTotal(), is(128 * 1024));
97+
}
98+
99+
}

0 commit comments

Comments
 (0)