From 4fa798a17a1b09ee06e22b320a5725a4e9052942 Mon Sep 17 00:00:00 2001 From: Ivona Stojanovic Date: Mon, 21 Aug 2023 16:29:44 +0100 Subject: [PATCH] Added docs for inverted flame graph Added documentation that explains an inverted flame graph. Signed-off-by: Ivona Stojanovic --- ...erted_flame_graph_for_inverted_example.png | Bin 0 -> 34960 bytes ...normal_flamegraph_for_inverted_example.png | Bin 0 -> 28670 bytes docs/flamegraph.rst | 78 ++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 docs/_static/images/inverted_flame_graph_for_inverted_example.png create mode 100644 docs/_static/images/normal_flamegraph_for_inverted_example.png diff --git a/docs/_static/images/inverted_flame_graph_for_inverted_example.png b/docs/_static/images/inverted_flame_graph_for_inverted_example.png new file mode 100644 index 0000000000000000000000000000000000000000..c22a6eee57698f2cfd21a4b5ad4a5fbe94b6c7a7 GIT binary patch literal 34960 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�v~6A2Sgmz%?rwC5}aF&&C@C_4ha$Sa(A$W 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 is always present and is displayed as thread 0. +.. _inverted flame graphs: + +Inverted flame graphs +------------------ + +In a normal flame graph, the roots are thread entry points and +the children of any given node are the functions called by that node, +and the leaf nodes are functions that allocated memory but did not call any +functions that allocated memory. This can result in duplicated leaf nodes, +if there are multiple call stacks that lead to a particular function that +performs allocations. + +When generating flame graphs, the ``--inverted`` option can be +specified to get an inverted flame graph. + +In an inverted flame graph, the roots are the functions that allocated memory, +and the children of any given node represent the percentage of any of that node's +allocations that can be attributed to a particular caller. + +The inverted flame graph is very helpful in analyzing where memory is being +spent in aggregate. If a function that allocates memory is called from multiple places, +in the normal flame graph it will show up multiple times in the leaves, but in the inverted +flame graph, all calls to one function will be aggregated. + +Simple example +-------------- + +.. code:: python + + def a(): + return 1000000 * "a" + + def a1(): + return 1000000 * "a" + + def b(): + return a() + + def c(): + return b() + + def d(): + return b() + + def f(): + return g() + + def e(): + return g() + + def g(): + return c() + + def main(): + a = a1() + x = d() + y = e() + z = f() + return (x,y,z,a) + + main() + + +This code allocates memory from the system allocator in just 2 places: ``a()``, and ``a1()``. +This is how the normal frame graph looks like: + +.. image:: _static/images/normal_flamegraph_for_inverted_example.png + +Here you can see that ``a()`` allocated memory three times when it is called from ``b()``, and +``a1()`` allocates memory when it is called from ``main()``. + +If we generate the inverted flame graph with ``--inverted``, the flame graph looks like this: + +.. image:: _static/images/inverted_flame_graph_for_inverted_example.png + +Here you can see that we have ``return 1000000 * "a"`` as a root two times, the first one allocates more memory +because ``a()`` is called three times from ``b()``, and the other ``return 1000000 * "a"`` is called once from ``main()`` once. + .. _temporal flame graphs: Temporal Flame Graphs