问题标签 [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.
javascript - 无法为 nodeJS 进程创建火焰图
我正在尝试使用 perf 实用程序分析 nodeJS REST API。我正在使用的命令是perf record -F 99 -p 5395 -g -- sleep 60
5395 作为进程 ID。它可以正常工作并将数据写入 perf.data 文件。
[ perf record: Woken up 6 times to write data ]
[ perf record: Captured and wrote 1.360 MB perf.data (~59425 samples) ]
但是,当我尝试使用它创建报告时,perf script > out.perf
我遇到了错误Failed to open /tmp/perf-5395.map, continuing without symbols
。这基本上意味着 perf 无法反编译代码以在输出文件中显示 javascript 代码。如何获取此地图文件?我错过了什么?
javascript - 如何解释铬火焰图表中的间隙
我试图更好地理解如何解释铬火焰图。
在下图_changeHandler
中显示为四个不同的块。但是我知道事实上它只被调用一次。
我在这里看到了一个类似的问题,声称这可能是一个错误,但那是四年前的事了:
Chrome devtools profile 火焰图中的这个差距是什么意思
问题:
在哪种情况下,chrome perf 工具会在同一函数调用的火焰图中显示间隙?
真正的问题是它确实使整个图表无效。图的底部是片段,但顶部是相同的功能。我完全不知道如何理解这一点。
当使用 CPU 限制时,问题会成倍恶化。请看第二张图,它与第一张图的操作相同,但 cpu 节流设置为 5 倍减速。
“函数调用”下的碎片条是单个函数调用,由于某种原因它被分成数百个部分。
performance - 生成混合模式火焰图时出错
我正在尝试在 Linux 机器(CentOS 7)上生成一些混合模式火焰图并遇到一些问题。
我正在遵循此链接中的说明:https ://www.slideshare.net/brendangregg/java-performance-analysis-on-linux-with-flame-graphs (从幻灯片 47 开始)。
当我运行以下命令来收集性能数据时:
它似乎生成 perf.data 没有错误。但是,当我尝试通过运行以下命令来处理 perf.data 时,
它向我显示以下消息:
有谁知道这些消息是什么意思?
javascript - Firefox 是否允许使用“聚合”火焰图来分析 JS 应用程序?
Firefox 开发者工具支持火焰图,但似乎时间被用作 X 轴:
在火焰图视图本身中,沿 X 轴的是时间。上面的屏幕截图涵盖了从 1435 毫秒到略过 1465 毫秒的时间段。沿 Y 轴是该时间点调用堆栈上的函数,顶层位于顶部,叶函数位于底部。函数采用颜色编码,以便于区分。
通常,火焰图使用百分比作为 X 轴,例如:pyflame或Brendan Gregg 的火焰图。
我发现基于时间的火焰图令人困惑,并且错过了获取每个函数的聚合时间的能力(就内容而言类似于调用树,但以更直观的方式表示)。此外,如果一个函数很短但被多次调用,很容易错过它,而在“聚合”火焰图上,它会突出显示。要了解为什么基于时间的火焰图令人困惑,让我从另一篇文章中借用示例- 诚然在 Chrome 中,但问题是相似的:
即使某些功能占用了总时间的 30%,在上图中也看不到。
有什么方法(通过插件或设置)我可以让 Firefox 显示所选时间片的聚合火焰图而不是基于时间的火焰图?
rust - 对于使用 Rayon 编写的代码,如何使用火焰箱获得详细的火焰图?
我正在尝试使用带有我使用Rayon编写的代码的火焰箱获得一些性能指标:
这工作正常,但只提供整个并行迭代器的信息。我想获得有关该功能的一些更细粒度的细节func
。
我尝试在函数中添加开始/结束,但运行时信息仅在我调用时可用flame::commit_thread()
,然后它似乎只将其打印到标准输出。理想情况下,当我在代码末尾调用 dump 时,我想打印出没有给定标签所花费的时间。
有没有办法从所有线程中转储标签?火焰的文档不是很好。
node.js - Google App Engine 如何实现分析(堆栈跟踪)?
我Google App Engine
用来运行我的NodeJS
应用程序flexible env
,现在我想生成 FlameGraph,但事情是 App Engine 本身处理的scaling
,deploying
现在任何人都可以告诉我如何生成Flamegraph
(NodeJs Profiling)来跟踪来自我的 NodeJs 服务器的请求。
如果你们中的任何人在任何框架(NodeJs 或任何其他)上使用过 Google App Engine,请大家告诉我你们是如何在 App Engine 上解决这类问题的。
更新 -
为什么我们需要在调试后删除实例。
r - 在 R 中读取 profvis 的输出
我正在尝试学习使用 profvis。这是一个带有可重现示例的链接:
我不明白为什么内存有两个数字,即。本页第一个示例中的 -3.5 和 9.5(其中 Time = 1290)。
有人可以解释如何解释内存的 2 个数字吗?
java - 分析 java 服务器并解释火焰图
我正在分析 java 服务器。我正在查看火焰图:http ://www.brendangregg.com/flamegraphs.html 。我有几个关于如何解释火焰轮廓的问题。我是 Java 新手,所以它们可能听起来很基础。
1) 在配置文件中,我观察到的顶部框架 libjvm_so 占用 38.6% cpu。这在java进程和服务器中正常吗?这个共享对象到底是什么?通常需要这么多处理吗?
2)函数/堆栈占用 x% 意味着什么。这是相对的还是绝对的?进程或 x% cpu 占总 cpu 使用量的 x%。这让我想到了第二个问题,当我比较 2 个火焰图时,是否通过进程的所有 cpu 使用情况进行了比较标准化?也就是说,如果一种方法在一个配置文件中占用 10% 而在另一个配置文件中占用 15%,这是否意味着该函数实际上正在消耗更多的 cpu。或者可能是初始进程的总体 cpu 使用率为 50% 但在第二个进程中 cpu 使用率为 30% 的情况,因此从绝对意义上讲,第二个配置文件显示该函数的 cpu 使用率降低。(50% 的 10% 大于 30% 的 15%)。