From f10f79f65493a4da8002ef164fe895066838779c Mon Sep 17 00:00:00 2001 From: Richard Qiao Date: Wed, 5 Aug 2020 20:05:26 -0400 Subject: [PATCH 1/4] Reverse call stacks so that it can show JFR style graph(bottom-up) --- README.md | 3 +++ .../jfr/flamegraph/output/JFRToFlameGraphWriter.java | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/README.md b/README.md index e295a05..6c624ea 100644 --- a/README.md +++ b/README.md @@ -98,6 +98,9 @@ $ ./jfr-flame-graph -h -rv, --show-return-value Show return value for methods in the stack Default: false + -rev, --reverse-call-stack + Reverse call stacks so that it can show JFR style graph(bottom-up) + Default: false -st, --start-timestamp Start timestamp in seconds for filtering Default: -9223372036854775808 diff --git a/src/main/java/com/github/chrishantha/jfr/flamegraph/output/JFRToFlameGraphWriter.java b/src/main/java/com/github/chrishantha/jfr/flamegraph/output/JFRToFlameGraphWriter.java index da9e7d3..2152559 100644 --- a/src/main/java/com/github/chrishantha/jfr/flamegraph/output/JFRToFlameGraphWriter.java +++ b/src/main/java/com/github/chrishantha/jfr/flamegraph/output/JFRToFlameGraphWriter.java @@ -93,6 +93,10 @@ public final class JFRToFlameGraphWriter { "--event"}, description = "Type of event used to generate the flamegraph", converter = EventType.EventTypeConverter.class) EventType eventType = EventType.METHOD_PROFILING_SAMPLE; + @Parameter(names = {"-rev", + "--reverse-call-stack"}, description = "Reverse call stacks so that it can show JFR style graph(bottom-up)") + boolean reverseCallStack; + private static final String EVENT_VALUE_STACK = "(stackTrace)"; private static final String PRINT_FORMAT = "%-16s: %s%n"; @@ -236,6 +240,13 @@ private Stack getStack(IEvent event) { stack.push(frameName); } } + if(reverseCallStack){ + Stack stack_rev = new Stack<>(); + while(stack != null && !stack.isEmpty()){ + stack_rev.push(stack.pop()); + } + stack = stack_rev; + } return stack; } From 30e4ce8e07cc404f9dca2ea3ad286520e8201bb9 Mon Sep 17 00:00:00 2001 From: Richard Qiao Date: Wed, 5 Aug 2020 20:07:37 -0400 Subject: [PATCH 2/4] add test --- .../chrishantha/jfr/flamegraph/output/ApplicationTest.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/test/java/com/github/chrishantha/jfr/flamegraph/output/ApplicationTest.java b/src/test/java/com/github/chrishantha/jfr/flamegraph/output/ApplicationTest.java index d033b11..9479060 100644 --- a/src/test/java/com/github/chrishantha/jfr/flamegraph/output/ApplicationTest.java +++ b/src/test/java/com/github/chrishantha/jfr/flamegraph/output/ApplicationTest.java @@ -85,4 +85,9 @@ public void testEventTypeOptionDefaultValue() throws Exception { assertEquals(EventType.METHOD_PROFILING_SAMPLE, jfrToFlameGraphWriter.eventType); } + public void testReverseCallStackValue() throws Exception { + String[] args = {"-f", "temp", "-rev"}; + parseCommands(args); + assertTrue(jfrToFlameGraphWriter.reverseCallStack); + } } From fa26ba86154098fd317914aa37e74cf61348e782 Mon Sep 17 00:00:00 2001 From: Richard Qiao Date: Wed, 5 Aug 2020 23:31:10 -0400 Subject: [PATCH 3/4] check not needed --- .../jfr/flamegraph/output/JFRToFlameGraphWriter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/github/chrishantha/jfr/flamegraph/output/JFRToFlameGraphWriter.java b/src/main/java/com/github/chrishantha/jfr/flamegraph/output/JFRToFlameGraphWriter.java index 2152559..445a5a1 100644 --- a/src/main/java/com/github/chrishantha/jfr/flamegraph/output/JFRToFlameGraphWriter.java +++ b/src/main/java/com/github/chrishantha/jfr/flamegraph/output/JFRToFlameGraphWriter.java @@ -242,7 +242,7 @@ private Stack getStack(IEvent event) { } if(reverseCallStack){ Stack stack_rev = new Stack<>(); - while(stack != null && !stack.isEmpty()){ + while(!stack.isEmpty()){ stack_rev.push(stack.pop()); } stack = stack_rev; From f0f56b2fba28212f8a3a88e7660b8fbeb2bef2f0 Mon Sep 17 00:00:00 2001 From: Richard Qiao Date: Wed, 12 Aug 2020 20:09:45 -0400 Subject: [PATCH 4/4] fix issue that json doesn't count correctly for tlab and heap --- .../lib/jfr-flame-graph-0.0.4-SNAPSHOT.jar | Bin 0 -> 26084 bytes .../jfr/flamegraph/output/JsonOutputWriter.java | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 build/install/jfr-flame-graph/lib/jfr-flame-graph-0.0.4-SNAPSHOT.jar diff --git a/build/install/jfr-flame-graph/lib/jfr-flame-graph-0.0.4-SNAPSHOT.jar b/build/install/jfr-flame-graph/lib/jfr-flame-graph-0.0.4-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..a0724d8e74b1a2bda75385fb571b6414abd2935d GIT binary patch literal 26084 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 B6Dj}z literal 0 HcmV?d00001 diff --git a/src/main/java/com/github/chrishantha/jfr/flamegraph/output/JsonOutputWriter.java b/src/main/java/com/github/chrishantha/jfr/flamegraph/output/JsonOutputWriter.java index 0e1fb4f..137f635 100644 --- a/src/main/java/com/github/chrishantha/jfr/flamegraph/output/JsonOutputWriter.java +++ b/src/main/java/com/github/chrishantha/jfr/flamegraph/output/JsonOutputWriter.java @@ -77,7 +77,7 @@ public StackFrame(String name) { this.name = name; } - public StackFrame addFrame(String frameName) { + public StackFrame addFrame(String frameName, long size) { if (children == null) { children = new ArrayList<>(); } @@ -87,7 +87,7 @@ public StackFrame addFrame(String frameName) { childrenMap.put(frameName, frame); children.add(frame); } - frame.value++; + frame.value += size; return frame; } } @@ -108,7 +108,7 @@ public void processEvent(long startTimestamp, long endTimestamp, long duration, } while (!stack.empty()) { - frame = frame.addFrame(stack.pop()); + frame = frame.addFrame(stack.pop(), size); } }