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

Support to parse PrintGCID #260

Merged
merged 6 commits into from
Aug 29, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
Expand Up @@ -301,6 +301,37 @@ protected String parseTypeString(String line, ParseInformation pos) throws Parse
}
}

// restriction PringGCID only for parallel scavenge collector
protected void parseGcId(String line, ParseInformation pos) throws ParseException {
if (!line.contains("#"))
return;
int i = pos.getIndex();
try {
// consume all leading spaces and '#'
final int lineLength = line.length();
final char[] lineChars = line.toCharArray();
char c = lineChars[i];
for (; i < lineLength; c = lineChars[++i]) {
if (c != ' ' && c != '#')
break;
}
if (i >= lineLength)
throw new ParseException("Unexpected end of line.", line);
// check whether the Id starts with a number
// -> skip number
for (; Character.isDigit(c) && i < lineLength; c = lineChars[++i]);
// -> skip ':'
for (; i<lineLength; c = lineChars[++i]) {
if (c != ':')
break;
}
}
finally {
i++;
pos.setIndex(i);
}
}

protected ExtendedType parseType(String line, ParseInformation pos) throws ParseException {
String typeString = parseTypeString(line, pos);
return getDataReaderTools().parseType(typeString);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -620,6 +620,7 @@ protected AbstractGCEvent<?> parseLine(String line, ParseInformation pos) throws
// pre-used->post-used, total, time
ZonedDateTime datestamp = parseDatestamp(line, pos);
double timestamp = getTimestamp(line, pos, datestamp);
parseGcId(line, pos);
ExtendedType type = parseType(line, pos);
AbstractGCEvent<?> ae;
if (type.getConcurrency() == Concurrency.CONCURRENT) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -551,6 +551,7 @@ protected AbstractGCEvent<?> parseLine(String line, ParseInformation pos) throws
// pre-used->post-used, total, time
ZonedDateTime datestamp = parseDatestamp(line, pos);
double timestamp = getTimestamp(line, pos, datestamp);
parseGcId(line, pos);
ExtendedType type = parseType(line, pos);
// special provision for concurrent events
if (type.getConcurrency() == Concurrency.CONCURRENT) {
Expand Down Expand Up @@ -579,8 +580,7 @@ else if (type.getCollectionType().equals(CollectionType.VM_OPERATION)) {

if (event.getExtendedType().getPattern() == GcPattern.GC_MEMORY_PAUSE) {
setMemoryAndPauses(event, line, pos);
}
else {
} else {
event.setPause(parsePause(line, pos));
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -417,4 +417,19 @@ public void shenandoah_232_Beginning() throws Exception {
is(1L));
}

@Test
public void parallelPrintGCID() throws Exception {
TestLogHandler handler = new TestLogHandler();
handler.setLevel(Level.WARNING);
GCResource gcResource = new GcResourceFile("SampleSun1_8_0ParallelPrintGCID.txt");
gcResource.getLogger().addHandler(handler);

DataReader reader = getDataReader(gcResource);
GCModel model = reader.read();

assertThat("gc count", model.size(), is(5));

assertEquals("number of errors", 0, handler.getCount());
}

}
17 changes: 17 additions & 0 deletions src/test/resources/openjdk/SampleSun1_8_0ParallelPrintGCID.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
OpenJDK 64-Bit Server VM (25.71-b00) for linux-loongarch64 JRE (1.8.0-internal-loongson_2022_07_26_20_28-b00), built on Jul 26 2022 20:34:57 by "loongson" with gcc 8.3.0
Memory: 16k page, physical 16539232k(15517424k free), swap 9227440k(9227440k free)
CommandLine flags: -XX:InitialHeapSize=10737418240 -XX:MaxHeapSize=10737418240 -XX:MaxNewSize=9663676416 -XX:NewSize=9663676416 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCID -XX:+PrintGCTimeStamps -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC
2022-07-26T21:00:40.750+0800: 3.117: #0: [GC (Allocation Failure) [PSYoungGen: 7077888K->222570K(8257536K)] 7077888K->222586K(9306112K), 0.5437135 secs] [Times: user=1.92 sys=0.20, real=0.55 secs]
2022-07-26T21:00:45.037+0800: 7.405: #1: [GC (System.gc()) [PSYoungGen: 3729513K->98289K(8257536K)] 3729529K->98321K(9306112K), 0.1937274 secs] [Times: user=0.69 sys=0.07, real=0.19 secs]
2022-07-26T21:00:45.231+0800: 7.599: #2: [Full GC (System.gc()) [PSYoungGen: 98289K->0K(8257536K)] [ParOldGen: 32K->98112K(1048576K)] 98321K->98112K(9306112K), [Metaspace: 16471K->16471K(1064960K)], 0.6492397 secs] [Times: user=1.52 sys=0.17, real=0.65 secs]
2022-07-26T21:02:14.912+0800: 97.280: #3: [GC (System.gc()) [PSYoungGen: 6687404K->105989K(8257536K)] 6785517K->204182K(9306112K), 0.0216159 secs] [Times: user=0.06 sys=0.00, real=0.03 secs]
2022-07-26T21:02:14.934+0800: 97.301: #4: [Full GC (System.gc()) [PSYoungGen: 105989K->0K(8257536K)] [ParOldGen: 98192K->203813K(1048576K)] 204182K->203813K(9306112K), [Metaspace: 19966K->19962K(1067008K)], 0.4555626 secs] [Times: user=1.52 sys=0.13, real=0.45 secs]
Heap
PSYoungGen total 8086016K, used 7277906K [0x0000000580000000, 0x00000007c0000000, 0x00000007c0000000)
eden space 7013376K, 88% used [0x0000000580000000,0x00000006fabd8888,0x000000072c100000)
from space 1072640K, 99% used [0x000000077e880000,0x00000007bfffc138,0x00000007c0000000)
to space 1211904K, 0% used [0x000000072c100000,0x000000072c100000,0x0000000776080000)
ParOldGen total 1048576K, used 370122K [0x0000000540000000, 0x0000000580000000, 0x0000000580000000)
object space 1048576K, 35% used [0x0000000540000000,0x00000005569728e0,0x0000000580000000)
Metaspace used 29044K, capacity 29852K, committed 29952K, reserved 1075200K
class space used 3288K, capacity 3510K, committed 3584K, reserved 1048576K