Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 1.36 #234

Merged
merged 121 commits into from
Nov 30, 2019
Merged
Changes from 3 commits
Commits
Show all changes
121 commits
Select commit Hold shift + click to select a range
49421b6
Add initial version of Shenandoah log parser
May 1, 2017
3e2fe3b
Fix unit conversions
May 2, 2017
43e370d
Minor optimizations
May 4, 2017
7146086
Add concurrent reset bitmap parsing
May 5, 2017
5723031
Remove statistics that are invalid due to concurrent evacuation
May 9, 2017
25e6d9f
Add unit tests
May 10, 2017
7c11dc9
Remove commented out code
May 10, 2017
df1d147
Change > in javadoc to > for travis
May 11, 2017
87fca91
[maven-release-plugin] prepare for next development iteration
chewiebug Jun 28, 2017
53db4b6
add sourceforge-release profile to release process
chewiebug Jun 28, 2017
12f8733
Adapt to changes in Shenandoah algorithm
Jul 1, 2017
a340357
Parse System.gc() events
Jul 3, 2017
9bc0874
Merge branch 'ophillan-shenandoah' into develop
chewiebug Jul 23, 2017
b69393c
add Mart Mägi to the list of developers
chewiebug Jul 23, 2017
f306f4c
Merge remote-tracking branch 'ophillan/develop' into develop
chewiebug Jul 23, 2017
850490c
refactor to use GCEvent + ConcurrentGCEvent instead of ShenandoahGCEvent
chewiebug Jul 26, 2017
cb6bef8
Add unit tests for refactoring
Aug 27, 2017
f0bc62b
Log a warning instead of stopping parsing in case of parse exception
Aug 27, 2017
9cb77be
Use Type.lookup() to determine the type of GC event
Aug 27, 2017
b9c4c19
Update DataReaderShenandoah javadoc
Aug 27, 2017
54c1a31
Remove BufferedReader, log failed line number at parse error, refacto…
Aug 30, 2017
5a68aa6
Add log file with DateTimeStamps
Aug 30, 2017
31f0add
Implement DataTimestamps decorator parsing
Aug 31, 2017
60d19ae
#190 make sure, InputStream is always closed after reading gc log file
chewiebug Sep 8, 2017
30873e0
Merge branch 'feature/enhance-shenandoah-datareader' into develop
chewiebug Sep 8, 2017
b6237f9
Bugfix/#192/fix rewriting unittest (#195)
chewiebug Dec 25, 2017
16a1a73
add maven-jdeps-plugin to prevent accidential usage of jdk internal apis
chewiebug Dec 25, 2017
433d977
#155 support unified jvm logging format with tag "gc" (level = info) …
chewiebug Dec 27, 2017
323892b
#155 refactor DataReaderUnifiedJvmLogging to prepare reading heap det…
chewiebug Jan 2, 2018
1f485f3
#155 support unified jvm logging format with tag "gc*" (level = trace…
chewiebug Feb 25, 2018
7334420
fix unittests on case sensitive file systems
chewiebug Feb 25, 2018
54d5042
update javadoc comments
chewiebug Feb 25, 2018
7ec56ac
Merge branch 'feature/#155/support-unified-jvm-logging-format' into d…
chewiebug Feb 25, 2018
23d0551
Add support for Go GC logging
rillig Feb 18, 2018
34726f6
improve unittests #196
chewiebug Mar 26, 2018
ec877d1
#194 improve detection of G1 gc logfiles
chewiebug May 8, 2018
6045303
test with multiple jdks
chewiebug May 8, 2018
f75537e
add .bettercodehub.yml
chewiebug May 30, 2018
a62a8af
#198 add support for -XX:+UseShenandoahGC in "non" unified jvm loggin…
chewiebug Jun 14, 2018
b363505
#199 add number of pauses + more memory information
chewiebug Jun 25, 2018
e8e26e9
Merge branch 'feature/#198/shenandoah-non-unified-logging-format' int…
chewiebug Jun 25, 2018
381e973
Add new type in AbstractGCEvent
Jul 16, 2018
49b70ae
add more jdk versions to build matrix
chewiebug Jul 24, 2018
a7ae4d2
#196 add Roland Illig to the list of contributors
chewiebug Jul 26, 2018
ebf5f8e
Merge branch 'pull/#196/golang' into develop
chewiebug Jul 26, 2018
7db04c2
add test for SummaryDataWriter
chewiebug Jul 26, 2018
06b2df7
Adds totalPermAllocMax, totalPermUsedMax, and
amcrn Jul 31, 2018
129829d
Add Promotion Avg & Total To Summary
amcrn Jul 31, 2018
109b2c8
Merge remote-tracking branch 'amcrn/enh/perm-summary' into develop
chewiebug Aug 1, 2018
1bab7ec
add amcrn to list of contributors
chewiebug Aug 1, 2018
2dbf9c1
Merge remote-tracking branch 'amcrn/enh/promotion-summary' into develop
chewiebug Aug 1, 2018
d7ec81b
#200 generalise handling of System.gc() events
chewiebug Aug 1, 2018
dc29a06
#200 add Krzystof Burek to list of contributors
chewiebug Aug 1, 2018
9918095
Merge branch 'develop-krzysztofburek' into develop
chewiebug Aug 1, 2018
c75a91b
improve error message on UnknownGcTypeExceptions
chewiebug Aug 1, 2018
672f24a
add unittest for ExtensionFileFilter
chewiebug Aug 1, 2018
255da16
small addition to readme
chewiebug Aug 1, 2018
e8eeb30
#198 add support for -XX:+UseShenandoahGC - XX:+PrintGCDetails
chewiebug Sep 6, 2018
d4580e0
update maven plugin versions
chewiebug Oct 23, 2018
986901f
update build configuration (jdk 11)
chewiebug Oct 23, 2018
99ceac8
update jacoco limits
chewiebug Oct 23, 2018
81dcfcf
Include GC Phases from ZGC for parsing
Marysunithajoseph Jan 13, 2019
dda185a
Corrected phase name
Marysunithajoseph Jan 14, 2019
9643bd8
Parsing Phases for ZGC
Marysunithajoseph Jan 15, 2019
84205d6
Removed unnecessary print outs
Marysunithajoseph Jan 15, 2019
1a05f67
Added test cases for default and memory matchers
yanqilee Jan 15, 2019
d7e2405
Added tests for gc all logging
yanqilee Jan 15, 2019
66e9c1b
fixed formatting
yanqilee Jan 15, 2019
75f83bb
Fixed a typo
yanqilee Jan 15, 2019
1256031
Seperating GC Causes and its memory info
Marysunithajoseph Jan 16, 2019
238050f
Merge branch 'feature/fullstackZGCintegration' of https://github.com/…
yanqilee Jan 18, 2019
9b7aad5
Gc causes no longer show total sum percentage
yanqilee Jan 21, 2019
8b00e90
Fixed up gc causes model
yanqilee Jan 21, 2019
b3fc7f6
Fixed some formatting
yanqilee Jan 21, 2019
5a9b562
Fixed up comment for build
yanqilee Jan 21, 2019
1f681bd
Fixed maven javadoc plugin failing on jdk 11.0.2
yanqilee Jan 21, 2019
1fdb0a0
initial code refactor
yanqilee Jan 22, 2019
52b4111
refactored addGcEvent
yanqilee Jan 22, 2019
ba10ced
Remove unused imports
yanqilee Jan 22, 2019
03284fc
Fixed Codacy issues
yanqilee Jan 22, 2019
70598e9
No longer alter event parameter in method
yanqilee Jan 22, 2019
2576e5d
Added missed null check on isParseablePhaseEvent
yanqilee Jan 23, 2019
18d4275
Refactored tests and updated method params
yanqilee Jan 23, 2019
8925464
update method naming
yanqilee Jan 23, 2019
d29aa3c
Added percentage assertions to test cases
yanqilee Jan 23, 2019
dfb87bd
reduce compenent_depth to 8
chewiebug Feb 3, 2019
946a47b
fix build on jdk11
chewiebug Feb 24, 2019
2cb14fb
Removed ZGC phase parsing rule and commented out warning assertion
yanqilee Mar 1, 2019
75c7f6e
Fixed parentheses variable names
yanqilee Mar 1, 2019
e8ea44e
Removed memory capture and added phases start exclusion
yanqilee Mar 1, 2019
ad1ca4b
Fixed comments and code style
yanqilee Mar 1, 2019
0eb52d4
Added notion of phases in AbstractGcEvent
yanqilee Mar 1, 2019
53355b4
Changed test names to be more general
yanqilee Mar 1, 2019
3ecd294
Added phases to parser, model and UI
yanqilee Mar 4, 2019
ac4f08b
Minor changes for styles, etc
yanqilee Mar 4, 2019
907a3be
Single line import on TestGCEventUJL
yanqilee Mar 4, 2019
4793b3d
Made GCEventUJL private in test class
yanqilee Mar 4, 2019
f893bbd
#216 also support parsing of phases for Serial, Parallel, CMS, G1 and…
chewiebug Jun 10, 2019
c90fd11
Merge branch 'pull/216/add-support-for-zgc-logging' into develop
chewiebug Jun 10, 2019
559eeb8
#216 add Yanqi Li to the list of contributors
chewiebug Jun 10, 2019
910e734
update copyright year
chewiebug Jun 10, 2019
6a76d89
add Mary Sunitha Joseph to the list of contributors
chewiebug Jun 11, 2019
117e8b9
#204 add new "Pause Young (G1 Evacuation Pause)" event
chewiebug Oct 22, 2018
51801bd
#204 support new phases for G1 in JDK11
chewiebug Jun 11, 2019
1fc85c3
Merge branch 'feature/#204/improve-parser-for-openjdk11' into develop
chewiebug Jun 11, 2019
e708cef
#204 improve gc event detection for G1 event names containing ()
chewiebug Jun 15, 2019
bc21c8f
update travis configuration concerning build jdks
chewiebug Sep 14, 2019
bb91a87
When a chart is exported as a PNG file, instead of applying the selec…
Sep 9, 2019
236c90b
add Sandro Rossi to list of contributors
chewiebug Sep 14, 2019
695f8f4
Merge pull request #229 from chewiebug/feature/#129/fix-png-export-to…
chewiebug Sep 14, 2019
4aa0231
Support uptime timestamps reported in milliseconds.
Sep 11, 2019
a79a099
Add support for G1 Archive regions.
Sep 12, 2019
85f1446
Add test for millisecond timestamp.
Sep 12, 2019
bcf6584
#228 small refactoring of uptimeunit detection
chewiebug Sep 17, 2019
1e4120d
add Dennis Lawler to list of contributors
chewiebug Sep 17, 2019
eb89b1f
Merge pull request #231 from chewiebug/feature/#228/support-uptimemillis
chewiebug Sep 17, 2019
ee15cd3
ignore output of -XX:+PrintStringDeduplicationStatistics for G1 (jdk8)
chewiebug Sep 21, 2019
5c88ab5
improve detection of jdk8 G1 logs
chewiebug Sep 21, 2019
327a64e
#198 update parsing of Shenandoah algorithm (jdk8u232, jdk11.0.4)
chewiebug Oct 11, 2019
27cef98
#198 improve rendering for Shenandoah algorithm (only concurrent even…
chewiebug Oct 11, 2019
7b35266
fully automate maven release process
chewiebug Nov 23, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -660,6 +660,7 @@ public String toString() {
public static final Type UJL_CMS_CONCURRENT_OLD = new Type("Old", Generation.TENURED, Concurrency.CONCURRENT, GcPattern.GC_MEMORY);

// unified jvm logging g1 event types
public static final Type UJL_G1_PAUSE_YOUNG = new Type("Pause Young (G1 Evacuation Pause)", Generation.YOUNG, Concurrency.SERIAL, GcPattern.GC_MEMORY_PAUSE);
public static final Type UJL_G1_PAUSE_MIXED = new Type("Pause Mixed", Generation.TENURED, Concurrency.SERIAL, GcPattern.GC_MEMORY_PAUSE);
public static final Type UJL_G1_TO_SPACE_EXHAUSTED = new Type("To-space exhausted", Generation.YOUNG, Concurrency.SERIAL, GcPattern.GC);
public static final Type UJL_G1_CONCURRENT_CYCLE = new Type("Concurrent Cycle", Generation.TENURED, Concurrency.CONCURRENT, GcPattern.GC_PAUSE);
@@ -673,6 +674,8 @@ public String toString() {
public static final Type UJL_G1_PHASE_EVACUATE_COLLECTION_SET = new Type("Evacuate Collection Set", Generation.YOUNG, Concurrency.SERIAL, GcPattern.GC_PAUSE);
public static final Type UJL_G1_PHASE_POST_EVACUATE_COLLECTION_SET = new Type("Post Evacuate Collection Set", Generation.YOUNG, Concurrency.SERIAL, GcPattern.GC_PAUSE);
public static final Type UJL_G1_PHASE_OTHER = new Type("Other", Generation.YOUNG, Concurrency.SERIAL, GcPattern.GC_PAUSE);
public static final Type UJL_G1_PHASE_PREPARE_FOR_COMPACTION = new Type("Phase 2: Prepare for compaction", Generation.YOUNG, Concurrency.SERIAL, GcPattern.GC_PAUSE);
public static final Type UJL_G1_PHASE_COMPACT_HEAP = new Type("Phase 4: Compact heap", Generation.YOUNG, Concurrency.SERIAL, GcPattern.GC_PAUSE);

// unified jvm logging shenandoah event types
public static final Type UJL_SHEN_INIT_MARK = new Type("Pause Init Mark", Generation.TENURED, Concurrency.SERIAL, GcPattern.GC_PAUSE);
Original file line number Diff line number Diff line change
@@ -221,7 +221,7 @@ public void testParseGcWithPhases() throws Exception {

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

assertThat("phases", model.getGcEventPhases().size(), is(4));
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
package com.tagtraum.perf.gcviewer.imp;

import static org.hamcrest.Matchers.closeTo;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Level;

import com.tagtraum.perf.gcviewer.UnittestHelper;
import com.tagtraum.perf.gcviewer.UnittestHelper.FOLDER;
import com.tagtraum.perf.gcviewer.model.GCModel;
import com.tagtraum.perf.gcviewer.model.GCResource;
import com.tagtraum.perf.gcviewer.model.GcResourceFile;
import org.junit.Test;

/**
* Test unified java logging G1 algorithm in OpenJDK 11
*/
public class TestDataReaderUJLG1JDK11 {
private GCModel getGCModelFromLogFile(String fileName) throws IOException {
return UnittestHelper.getGCModelFromLogFile(fileName, FOLDER.OPENJDK_UJL, DataReaderUnifiedJvmLogging.class);
}

@Test
public void testDefaultsPauseYoungNormal() throws Exception {
TestLogHandler handler = new TestLogHandler();
handler.setLevel(Level.WARNING);
GCResource gcResource = new GcResourceFile("byteArray");
gcResource.getLogger().addHandler(handler);
InputStream in = new ByteArrayInputStream(
("[1.113s][info][gc] GC(4) Pause Young (Normal) (G1 Evacuation Pause) 70M->70M(128M) 12.615ms")
.getBytes());

DataReader reader = new DataReaderUnifiedJvmLogging(gcResource, in);
GCModel model = reader.read();

assertThat("number of warnings", handler.getCount(), is(0));
assertThat("number of events", model.size(), is(1));
assertThat("pause", model.get(0).getPause(), closeTo(0.012615, 0.00000001));
}

@Test
public void testDefaultsPauseYoungConcurrentStart() throws Exception {
TestLogHandler handler = new TestLogHandler();
handler.setLevel(Level.WARNING);
GCResource gcResource = new GcResourceFile("byteArray");
gcResource.getLogger().addHandler(handler);
InputStream in = new ByteArrayInputStream(
("[1.155s][info][gc] GC(5) Pause Young (Concurrent Start) (G1 Evacuation Pause) 84M->79M(128M) 5.960ms")
.getBytes());

DataReader reader = new DataReaderUnifiedJvmLogging(gcResource, in);
GCModel model = reader.read();

assertThat("number of warnings", handler.getCount(), is(0));
assertThat("number of events", model.size(), is(1));
assertThat("heap before", model.get(0).getPreUsed(), is(84 * 1024));
}

@Test
public void testDefaultsPauseYoungPrepareMixed() throws Exception {
TestLogHandler handler = new TestLogHandler();
handler.setLevel(Level.WARNING);
GCResource gcResource = new GcResourceFile("byteArray");
gcResource.getLogger().addHandler(handler);
InputStream in = new ByteArrayInputStream(
("[2.649s][info][gc] GC(218) Pause Young (Prepare Mixed) (G1 Evacuation Pause) 81M->79M(128M) 1.322ms")
.getBytes());

DataReader reader = new DataReaderUnifiedJvmLogging(gcResource, in);
GCModel model = reader.read();

assertThat("number of warnings", handler.getCount(), is(0));
assertThat("number of events", model.size(), is(1));
assertThat("heap after", model.get(0).getPostUsed(), is(79 * 1024));
}

@Test
public void testDefaultsPauseYoungMixed() throws Exception {
TestLogHandler handler = new TestLogHandler();
handler.setLevel(Level.WARNING);
GCResource gcResource = new GcResourceFile("byteArray");
gcResource.getLogger().addHandler(handler);
InputStream in = new ByteArrayInputStream(
("[2.651s][info][gc] GC(219) Pause Young (Mixed) (G1 Evacuation Pause) 84M->83M(128M) 1.599ms")
.getBytes());

DataReader reader = new DataReaderUnifiedJvmLogging(gcResource, in);
GCModel model = reader.read();

assertThat("number of warnings", handler.getCount(), is(0));
assertThat("number of events", model.size(), is(1));
assertThat("total heap", model.get(0).getTotal(), is(128 * 1024));
}

@Test
public void testFullGcWithPhases() throws Exception {
TestLogHandler handler = new TestLogHandler();
handler.setLevel(Level.WARNING);
GCResource gcResource = new GcResourceFile("byteArray");
gcResource.getLogger().addHandler(handler);
InputStream in = new ByteArrayInputStream(
("[1.204s][info][gc,task ] GC(15) Using 3 workers of 4 for full compaction\n" +
"[1.204s][info][gc,start ] GC(15) Pause Full (G1 Evacuation Pause)\n" +
"[1.204s][info][gc,phases,start] GC(15) Phase 1: Mark live objects\n" +
"[1.207s][info][gc,stringtable ] GC(15) Cleaned string and symbol table, strings: 7381 processed, 70 removed, symbols: 49128 processed, 10 removed\n" +
"[1.207s][info][gc,phases ] GC(15) Phase 1: Mark live objects 3.036ms\n" +
"[1.207s][info][gc,phases,start] GC(15) Phase 2: Prepare for compaction\n" +
"[1.208s][info][gc,phases ] GC(15) Phase 2: Prepare for compaction 0.808ms\n" +
"[1.208s][info][gc,phases,start] GC(15) Phase 3: Adjust pointers\n" +
"[1.210s][info][gc,phases ] GC(15) Phase 3: Adjust pointers 1.916ms\n" +
"[1.210s][info][gc,phases,start] GC(15) Phase 4: Compact heap\n" +
"[1.223s][info][gc,phases ] GC(15) Phase 4: Compact heap 13.268ms\n" +
"[1.224s][info][gc,heap ] GC(15) Eden regions: 0->0(17)\n" +
"[1.224s][info][gc,heap ] GC(15) Survivor regions: 0->0(1)\n" +
"[1.224s][info][gc,heap ] GC(15) Old regions: 128->62\n" +
"[1.224s][info][gc,heap ] GC(15) Humongous regions: 0->0\n" +
"[1.224s][info][gc,metaspace ] GC(15) Metaspace: 15025K->15025K(1062912K)\n" +
"[1.224s][info][gc ] GC(15) Pause Full (G1 Evacuation Pause) 127M->59M(128M) 20.596ms\n" +
"[1.225s][info][gc,cpu ] GC(15) User=0.05s Sys=0.00s Real=0.02s\n" +
"[1.225s][info][safepoint ] Leaving safepoint region\n" +
"[1.225s][info][safepoint ] Total time for which application threads were stopped: 0.0222150 seconds, Stopping threads took: 0.0000452 seconds\n")
.getBytes());

DataReader reader = new DataReaderUnifiedJvmLogging(gcResource, in);
GCModel model = reader.read();

assertThat("number of warnings", handler.getCount(), is(0));
assertThat("number of events", model.size(), is(1));
assertThat("total heap", model.get(0).getTotal(), is(128 * 1024));

}

}