问题标签 [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.

0 投票
1 回答
1196 浏览

xcode - 通过火焰图分析 Node.js 性能(在 Mac 上)

火焰图是分析软件的可视化,可以快速准确地识别最常见的代码路径 -火焰图上的 Brendan Gregg

node --perf-basic-prof与 Xcode Instruments 一起使用(在 Mac 上)应该有助于生成用于性能分析的火焰图。按照本指南,这很容易:

  1. 使 node.js 0.12 生成一个perf-<pid>.mapusingnode --perf-basic-prof app.js
  2. 使用 Xcode 仪器时间分析器记录堆栈(导出为profile.csv
  3. 使用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 文件(这不起作用)?

0 投票
0 回答
1589 浏览

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

谁能帮帮我吗 ?克服这个问题。

0 投票
1 回答
1165 浏览

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 等项目。

我喜欢火焰图项目。但是,这种可视化不利于代码理解。还有其他项目、文章、想法可能会有所帮助吗?

0 投票
1 回答
1151 浏览

java - 如何使用 Java Flight Recorder 避免截断堆栈跟踪

我正在使用 Oracle Java Flight Recorder收集 Java 应用程序的堆栈跟踪示例。这些堆栈跟踪使我最终能够生成CPU Flamegraph

我的问题是超过 64 帧的堆栈跟踪被 Java Flight Recorder 截断。在 Flamegraph 中很容易观察到,使用调试器我可以观察到 noFLRStackTrace超过 64FLRFrame秒,并且几乎所有 64 帧的堆栈跟踪都将其 TruncationState 设置为TRUNCATED

有谁知道这个 64 帧限制是否可以增加?如果堆栈跟踪不完整,火焰图将毫无用处。

0 投票
1 回答
260 浏览

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

0 投票
0 回答
427 浏览

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 小时前?我会得到什么样的火焰图?我需要做其他事情吗?

0 投票
1 回答
239 浏览

ruby-on-rails - 处理机架迷你轮廓仪火焰图的信息过载

rack mini profiler 创建的火焰图有很多信息,但我很难处理这一切,因为涉及大量层:

示例截图

是否可以隐藏涉及第三方 gem 的图层,或者以文本模式显示信息(类似于--printer=graphruby​​-prof)?

0 投票
2 回答
664 浏览

google-chrome - Chrome 时间轴不会在火焰图上显示所有调用

在使用 Google Chrome 时间轴功能时,我注意到一件奇怪的事情。在我的 PC 上,工作场所的火焰图非常平坦,仅显示 1-2 个函数调用深度。我的第一个想法是:“嗯,这就是它的工作方式”。但是当我从家里打开同一个 web 应用程序时,火焰图要高得多,显示所有函数调用。

两种浏览器的版本相同(51.0.2704.84 m - 目前最新)。DevTools 中的所有设置都是一样的。

工作中电脑的火焰图: 个人电脑

家里电脑的火焰图: 笔记本电脑

我的问题很简单:为什么工作中的计算机没有显示完整的调用图,我该如何解决这个问题?

0 投票
3 回答
1695 浏览

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输出的快照:

如您所见,根本没有调用跟踪。我真的很想深入研究我的系统,如果没有调用跟踪,这些结果将毫无用处。

0 投票
1 回答
9123 浏览

linux-kernel - linux 的 perf 实用程序如何理解堆栈跟踪?

Linux 的 perf 实用程序被 Brendan Gregg 用于为 c/c++、jvm 代码、nodejs 代码等生成火焰图。

Linux 内核本身是否理解堆栈跟踪?即使进程是用完全不同的语言编写的,我在哪里可以阅读更多关于工具如何自省进程堆栈跟踪的信息?