问题标签 [flamegraph]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
xcode - 通过火焰图分析 Node.js 性能(在 Mac 上)
火焰图是分析软件的可视化,可以快速准确地识别最常见的代码路径 -火焰图上的 Brendan Gregg
node --perf-basic-prof
与 Xcode Instruments 一起使用(在 Mac 上)应该有助于生成用于性能分析的火焰图。按照本指南,这很容易:
- 使 node.js 0.12 生成一个
perf-<pid>.map
usingnode --perf-basic-prof app.js
- 使用 Xcode 仪器时间分析器记录堆栈(导出为
profile.csv
) - 使用Brendan Gregg perl 工具生成火焰图,使用
./stackcollapse-instruments.pl profile.csv | ./flamegraph.pl > graph.svg
遗憾的是,生成的火焰图并没有受益于perf-<pid>.map
因此离开方法地址而不是它们的名称(1cfc9a09b880
而不是LazyCompile:~ /node_modules/benchmark/benchmark.js:1870
)。
有没有办法将映射/符号提供给 Xcode 仪器,使其生成带有方法名称的 csv 文件(这不起作用)?
android - 找不到构建 ID,继续没有符号,在跨平台上遇到 linux perf
我有一个简单的程序,它的性能要在带有 linux 3.10 和 perf tool 3.4 版本的 arm cortex a7 机器上测量
程序:
使用火焰图可视化的 perf 工具数据
temp.svg 低于
所以我的疑问是未知的痕迹为什么会发生,我将采样率提高到 5000 的原因是我无法查看 main2 和 main3,如果它在 99 左右
更新:上述unknown
符号是因为 perf 不知道我们在跨平台上的符号,所以图表只是将 unknown 放在未知符号的十六进制地址中,因此建议提供 vmlinux 文件作为其输入report
,即使在提供它之后也是如此。我已经观察到perf
抛出错误的报告以及报告
这是因为我的 vmlinux build id 和带有 perf.data 的 buildid 不匹配?我认同 !
如果是这样,perf.data 是从哪里获得构建 ID 的?
前提是我已经仔细刷过相同的图像并使用相同的 vmlinux
perf report -k vmlinux
谁能帮帮我吗 ?克服这个问题。
linux - 如何使用 linux perf 工具进行代码理解
我对“perf”记录调用图的能力着迷,并试图了解如何使用它来理解新的代码库。
我在调试模式下编译了代码,并使用以下命令运行单元测试:
perf record --call-graph dwarf make test
这将创建一个 230 兆的 perf.data。然后我写出调用图
性能报告 --call-graph --stdio > callgraph.txt
这将创建一个 50 兆的文件。
理想情况下,我只想查看属于该项目的代码,而不是内核代码、系统调用、c++ 标准库,甚至是 boost 和任何其他第三方软件。目前我看到像 __GI___dl_iterate_phdr、_Unwind_Find_FDE 等项目。
我喜欢火焰图项目。但是,这种可视化不利于代码理解。还有其他项目、文章、想法可能会有所帮助吗?
java - 如何使用 Java Flight Recorder 避免截断堆栈跟踪
我正在使用 Oracle Java Flight Recorder收集 Java 应用程序的堆栈跟踪示例。这些堆栈跟踪使我最终能够生成CPU Flamegraph。
我的问题是超过 64 帧的堆栈跟踪被 Java Flight Recorder 截断。在 Flamegraph 中很容易观察到,使用调试器我可以观察到 noFLRStackTrace
超过 64FLRFrame
秒,并且几乎所有 64 帧的堆栈跟踪都将其 TruncationState 设置为TRUNCATED
。
有谁知道这个 64 帧限制是否可以增加?如果堆栈跟踪不完整,火焰图将毫无用处。
rhel5 - 为什么 systemtap 不生成创建火焰图所需的输出?
在为生成火焰图数据而执行 stap 时,为什么我的 out.stap-stacks 缺少过程数据?
- 操作系统:RHEL 5.10.0.2
- 内核:2.6.18-371.11.1.el5
- SystemTap:1.8-6.el5
安装的软件包:
systemtap-sdt-devel-1.8-6.el5
systemtap-devel-1.8-6.el5
systemtap-devel-1.8-6.el5
systemtap-runtime-1.8-6.el5
systemtap-sdt-devel-1.8-6.el5
systemtap-1.8-6.el5
systemtap-initscript-1.8-6.el5
systemtap-client-1.8-6.el5
systemtap-server-1.8-6.el5
systemtap-testsuite-1.8-6.el5
内核开发-2.6.18-371.11.1.el5
内核调试开发-2.6.18-371.11.1.el5
使用的命令:
示例 out.stap-stacks 文件:
0xffffffff8000e81a 0x0 1 0xffffffff8004ab87 0x0 1 0xffffffff8025d15d 0x0 1 0xffffffff80239356 0x0 1 0xffffffff8004219a 0x0 1 0xffffffff8000ca32 0x0 1 0xffffffff8003214e 0x0 1 0xffffffff80013bc8 0x0 1 0xffffffff80232d41 0x0 1 0xffffffff8001a4ca 0x0 1 0xffffffff80011db5 0x0 1 0xffffffff8004aad2 0x0 1 0xffffffff800ec8bb 0x0 1 0xffffffff8003ead5 0x0 1 0xffffffff80234c43 0x0
javascript - Node.js 火焰图注释正常工作
我正在尝试在 ubuntu 14.04 上为 node.js 应用程序生成火焰图。我使用了本指南(Brendan Gregg):http ://www.brendangregg.com/blog/2014-09-17/node-flame-graphs-on-linux.html 。
1) 我在 web 用户下运行我的 node.js 应用程序, --perf-basic-prof
并看到它在 temp 文件夹中为该过程生成了一个性能映射文件。
2)一天后,我尝试使用以下命令生成火焰图本身:
它确实生成了一个火焰图,但它看起来很奇怪,条目很少,有些未知,而且看起来与代码中发生的事情相去甚远。
为什么会这样?我在这里想念什么?它是否与运行承诺或生成器的 node.js 相关(我非常怀疑)。可能是因为采样时间为 30 秒,而我的大部分活动发生在大约 4 小时前?我会得到什么样的火焰图?我需要做其他事情吗?
google-chrome - Chrome 时间轴不会在火焰图上显示所有调用
在使用 Google Chrome 时间轴功能时,我注意到一件奇怪的事情。在我的 PC 上,工作场所的火焰图非常平坦,仅显示 1-2 个函数调用深度。我的第一个想法是:“嗯,这就是它的工作方式”。但是当我从家里打开同一个 web 应用程序时,火焰图要高得多,显示所有函数调用。
两种浏览器的版本相同(51.0.2704.84 m - 目前最新)。DevTools 中的所有设置都是一样的。
工作中电脑的火焰图:
家里电脑的火焰图:
我的问题很简单:为什么工作中的计算机没有显示完整的调用图,我该如何解决这个问题?
linux - Perf Tool Linux - 无调用图
我想perf version 3.0.8
用来分析我的嵌入式系统Linux kernel version 3.0.8
。
我使用 zlib 和 elfutils 交叉编译了工具/性能。
为了熟悉这个工具,我使用了一个使用-g
选项编译的简单快速排序示例。
我运行perf record -F 99 -g -- ./qsort
(从示例中复制)然后perf report --stdio
查看我的配置文件结果。
这是perf report -g --stdio
输出的快照:
如您所见,根本没有调用跟踪。我真的很想深入研究我的系统,如果没有调用跟踪,这些结果将毫无用处。
linux-kernel - linux 的 perf 实用程序如何理解堆栈跟踪?
Linux 的 perf 实用程序被 Brendan Gregg 用于为 c/c++、jvm 代码、nodejs 代码等生成火焰图。
Linux 内核本身是否理解堆栈跟踪?即使进程是用完全不同的语言编写的,我在哪里可以阅读更多关于工具如何自省进程堆栈跟踪的信息?