From 6b2959fc50e29b63eff1e6e87aa461626ecd1bc7 Mon Sep 17 00:00:00 2001 From: Sonia Farrah Date: Wed, 10 Aug 2016 10:42:12 -0400 Subject: [PATCH] doc : Add user guide for the Flame graph view This shows what a cpu flame graph is, how to use the view and an example workflow. Change-Id: I7f6f6ccf1682b5396ef9ec24c9e984dc62d7a190 Signed-off-by: Sonia Farrah Signed-off-by: Matthew Khouzam Reviewed-on: https://git.eclipse.org/r/78765 Reviewed-by: Bernd Hufmann Tested-by: Bernd Hufmann Reviewed-by: Hudson CI --- .../doc/User-Guide.mediawiki | 82 ++++++++++++++++++ .../doc/images/Flame_Graph.png | Bin 0 -> 47470 bytes 2 files changed, 82 insertions(+) create mode 100644 doc/org.eclipse.tracecompass.doc.user/doc/images/Flame_Graph.png diff --git a/doc/org.eclipse.tracecompass.doc.user/doc/User-Guide.mediawiki b/doc/org.eclipse.tracecompass.doc.user/doc/User-Guide.mediawiki index 7f544e5742..4f275e1d12 100644 --- a/doc/org.eclipse.tracecompass.doc.user/doc/User-Guide.mediawiki +++ b/doc/org.eclipse.tracecompass.doc.user/doc/User-Guide.mediawiki @@ -2449,6 +2449,88 @@ See Control Flow View's '''[[#Using_the_mouse | Using the mouse]]''', '''[[#Usin See Control Flow View's '''[[#Marker_Axis | Marker Axis]]'''. +== Flame Graph View == + +This is an aggregate view of the function calls from the '''Call Stack View'''. This shows a bird's eye view of what are the main +time sinks in the traced applications. Each entry in the '''Flame Graph''' represents an aggregation of all the calls to a function +in a certain depth of the call stack having the same caller. So, functions in the '''Flame Graph''' are aggregated by depth and +caller. This enables the user to find the most executed code path easily. + +* In a '''Flame Graph''', each entry (box) represents a function in the stack. +* If one takes a single vertical line in the view, it represents a full call stack with parents calling children. +* The ''x-axis'' represents total duration (execution time) and not absolute time, so it is not aligned with the other views. +* The width of an entry is the total time spent in that function, including time spent calling the children. +* The total time can exceed the longest duration, if the program is pre-empted and not running during its trace time. +* Each thread traced makes its own flame graph. + +The function name is visible on each Flame graph event if the size permits. Each box in the '''Flame Graph''' +has the same color as the box representing the same function in the '''Call Stack'''. + +To open this view select a trace, expand it in the '''Project Explorer''' then expand the +'''Call Graph Analysis''' (the trace must be loaded) and open the '''Flame Graph'''. +It's also possible to go in '''Window''' -> '''Show View''' -> '''Tracing''' then +select '''Flame Graph''' in the list. + +[[Image:images/Flame_Graph.png|Flame Graph View]] + +To use the '''Flame graph''', one can navigate it and find which function is consuming the most self-time. +This can be seen as a large plateau. Then the entry can be inspected. At this point, the worst offender in +terms of CPU usage will be highlighted, however, it is not a single call to investigate, but rather the +aggregation of all the calls. Right mouse-clicking on that entry will open a context sensitive menu. +Selecting '''Go to minimum''' or '''Go to maximum''' will take the user to the minimum or maximum +recorded times in the trace. This is interesting to compare and contrast the two. + +Hovering over a function will show a tooltip with the statistics on a per-function basis. One can see the total and self times +(''worst-case'', ''best-case'', ''average'', ''total time'', ''standard deviation'', ''number of calls'') for that function. + +=== How to use a Flame Graph === + +Observing the time spent in each function can show where most of the time is spent and where one could optimize. +An example in the image above: one can see that ''mp_sort'' is a recursive sort function, it takes approximately +40% of the execution time of the program. That means that perfectly parallelizing it can yield a gain of 20% for 2 threads, 33% for 3 +and so forth. Looking at the function '''print_current_files''', it takes about 30% of the time, and it has a child ''print_many_per_line'' that has a large +self time (above 10%). This could be another area that can be targeted for optimization. Knowing this in advance helps developers +know where to aim their efforts. + +It is recommended to have a kernel trace as well as a user space trace in an experiment +while using the '''Flame Graph''' as it will show what is causing the largest delays. +When using the '''Flame Graph''' together with a call stack and a kernel trace, +an example work flow would be to find the worst offender in terms of time taken for a function +that seems to be taking too longThen, using the context menu '''Go to maximum''', one can navigate +to the maximum duration and see if the OS is, for example, preempting the function for too long, +or if the issue is in the code being executed. + +=== Using the mouse === + +*'''Double-click on the duration ruler''' will zoom the graph to the selected duration range. +*'''Shift-left-click or drag''': Extend or shrink the selection range +*'''Mouse wheel up/down''': scroll up or down +* '''Shift-mouse wheel up/down''': scroll left or right +* '''Ctrl-mouse wheel up/down''': zoom in or out horizontally +* '''Shift-Ctrl-mouse wheel up/down''': zoom in or out vertically + +When the mouse cursor is over entries (left pane): + +*'''-''': Collapse the '''Flame Graph''' of the selected thread +*'''+''': Expand the '''Flame Graph''' of the selected thread + +=== Using the keyboard === + +The following keyboard shortcuts are available: + +*'''Down Arrow''': selects the next stack depth +*'''Up Arrow''': selects the previous stack depth +*'''Home''': selects the first thread's '''Flame Graph''' +*'''End''': selects the last thread's '''Flame Graph''''s deepest depth +*'''Enter''': toggles the expansion state of the current thread in the tree +*'''Ctrl + +''': Zoom-in vertically +*'''Ctrl + -''': Zoom-out vertically +*'''Ctrl + 0''': Reset the vertical zoom + +=== Importing a binary or function name mapping file (for LTTng-UST <2.8 traces) === + +See Call Stack View's '''[[#Call Stack View | Importing a binary or function name mapping file (for LTTng-UST <2.8 traces) ]]'''. + == Memory Usage == The Memory Usage view allows the user to visualize the active memory usage per thread over time, if the application and trace provide this information. diff --git a/doc/org.eclipse.tracecompass.doc.user/doc/images/Flame_Graph.png b/doc/org.eclipse.tracecompass.doc.user/doc/images/Flame_Graph.png new file mode 100644 index 0000000000000000000000000000000000000000..bcc807108b7e889834544d427b808e72a97b2668 GIT binary patch literal 47470 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
    YJX%>zYonH?V>bpjhDTft|vQ3O*7Ww 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