堆坍塌-ghc
将GHC prof文件折叠到flamegraph输入中的程序
动机
尽管有其他功能类似的软件包(不包括NIH综合征),但该软件包仍然存在的原因归结为:
- 它只做一件事(堆栈折叠),所以用户可以自行安装flamegraph脚本、传递选项等(在我看来,这并不是一个限制,相反),
- 输出控制:注释(颜色配置文件)、使用源位置从配置的模块集扩展跟踪或切换限定名称,
- 精确的刻度和/或字节
-第页
报告,
- 它很快
目录
基本用法
(以下所有示例都假设您已安装火焰记录仪
在您的道路上)
可视化记号
如果您有详细的prof文件(-P(P)
RTS选项)
stackcollapse ghc专业文件|火焰图.pl--标题“示例”--副标题“时间”--计数名称tick>path_to_svg
如果您有一个标准的prof文件(-第页
RTS选项)
stackcollapse-ghc-p prof_file|flamegraph.pl--title“示例”--subtitle“时间”--countname ticks>path_to_svg
可视化分配
如果您有详细的prof文件(-P(P)
RTS选项)
stackcollapse-ghc--alloc prof_file|flamegraph.pl--title“示例”--subtitle“已分配的字节”--countname Bytes>path_to_svg
如果您有一个标准的prof文件(-第页
RTS选项)
stackcollapse-ghc--alloc-p prof_file|flamegraph.pl--title“示例”--subtitle“已分配的字节”--countname Bytes>path_to_svg
食谱
为模块使用不同的颜色
开箱即用。你只需要告诉程序哪些模块是“你的”(默认情况下,它只假设主要
)并将所需的颜色方案传递给flamegraph脚本
stackcollapse-ghc-u Example prof_file|flamegraph.pl--title“带颜色的示例”--subtitle“时间”--countname ticks--color java>path_to_svg
(来自模块的轨迹在此调色板下为绿色)
或者您可以使用微机
托盘跟踪分配
stackcollapse-ghc-u Example--alloc-p prof_file|flamegraph.pl--title“带颜色的示例”--subtitle“分配的字节”--countname字节--color mem>path_to_svg
这是通过使用一个名为注释.堆坍塌-ghc
添加注释_【j】
到中模块的跟踪-u个
,_[一]
到CAF公司和_[克]
到“内核”模块,例如GHC公司
或系统
关闭限定名
您可能想通过关闭某些模块的限定名称来缓和火焰图中的视觉混乱。您可以使用-u个
此选项与颜色托盘示例中的选项相同。来自您传入的模块的痕迹-u个
默认情况下将具有不合格的名称
stackcollapse ghc-u示例-p专业文件|火焰图.pl--标题“示例”--副标题“时间”--计数名称tick>path_to_svg
如果你想使用视觉指示和保留限定名,您可以使用以下选项
stackcollapse-ghc-Q-u Example-p prof_file|flamegraph.pl--title‘Example’--subtitle‘Time’--countname ticks--color java>path_to_svg
添加源位置
如果您想查看生成的火焰图上痕迹的来源,可以通过组合-u个
用选项标记要包含位置的模块-秒
stackcollapse-ghc-s-u Example prof_file|flamegraph.pl--title“带源的示例”--subtitle“时间”--countname ticks>path_to_svg
或者,您可以简单地将其包含在所有记录道中(有或无-u个
取决于您是否需要它来做其他事情,例如颜色或限定名)
stackcollapse-ghc-S prof_file|flamegraph.pl--title“带源的示例”--subtitle“时间”--countname ticks>path_to_svg
“反向”火焰图
有时,将函数放在底部,将其调用者放在上面是有意义的。这种模式称为“反向”火焰图。你可以用堆坍塌-ghc
(实际工作由火焰记录仪
脚本)
stackcollapse-ghc prof_file|flamegraph.pl--reverse--title'reverse'--countname ticks>path_to_svg
所有选项
用法:stackcollapse-ghc[OPTIONS]FILE选项:-P处理详细的prof文件(“-P”或“-pa”选项)(默认)-p处理标准prof文件(“-p”选项)-u module_name--user-module=模块名称用户模块的名称(可以重复添加多个模块)。匹配整个“层次结构”,因此`MyModule`匹配`MyModule\以及`MyModule。内部`-t—时间相对于时间折叠(默认)-a—分配相对于分配的折叠-S将源位置附加到每个函数名-s将源位置附加到用户模块中定义的函数--no-source不附加源位置(默认)-Q始终使用限定的函数名--no-qualified不使用限定的函数名-q对用户模块中未定义的函数使用限定名(默认)-A—注释,—annot向输出添加注释(j—用户模块,k—GHC和系统,i—CAF)--无注释,--无注释不向输出添加注释
安装
您可以从安装黑客攻击或堆叠通过使用其中之一阴谋集团
以下为:
cabal v2-更新cabal v2-失速堆叠折叠-ghc
或堆栈
堆栈安装stackcollapse-ghc