使用 --perf_basic_prof_only_functions 构建多个 node.js 进程的火焰图
Posted
技术标签:
【中文标题】使用 --perf_basic_prof_only_functions 构建多个 node.js 进程的火焰图【英文标题】:Building a flamegraph of multiple node.js processes while using --perf_basic_prof_only_functions 【发布时间】:2016-11-14 19:57:41 【问题描述】:我们目前使用节点集群来充分利用我们的机器,并希望能够同时分析所有进程(仅函数调用,我们使用--perf_basic_prof_only_functions
)。虽然获取信息和构建火焰图工作正常,但我们似乎获得了很多 [perf-$PID.map]
的条目,这使得看起来好像要么缺少一些调用来告诉工具之一来解释多个 perf 文件。
具体来说,我们正在做类似以下的事情:
sudo perf record -F 99 -o perf.data -p $PIDS -g -- sleep 30
sudo perf script -i perf.data > out.nodestacks
# Using http://github.com/brendangregg/FlameGraph
./stackcollapse-perf.pl < ../out.nodestacks | ./flamegraph.pl > ../flame.svg
但是查看perf script
的输出,有很多类似的条目:
3881ddc630da [unknown] (/tmp/perf-20350.map)
3881dc5aae44 [unknown] (/tmp/perf-20350.map)
3881dc7d7275 [unknown] (/tmp/perf-20350.map)
3881dc7d6f4b [unknown] (/tmp/perf-20350.map)
3881dc7d6953 [unknown] (/tmp/perf-20350.map)
还有其他人遇到过这个问题吗?谢谢!
【问题讨论】:
【参考方案1】:您是否尝试使用 --perf_basic_prof(而不是 --perf_basic_prof_only_functions)? 至少这为我解决了一些缺失的、未翻译的条目。
在我的例子中,这些条目如下: 内置:JSEntryTrampoline 存根:JSEntryStub
【讨论】:
--perf_basic_prof
不是一个选项,因为不幸的是,我们现在不希望有大量持续增长的文件:(以上是关于使用 --perf_basic_prof_only_functions 构建多个 node.js 进程的火焰图的主要内容,如果未能解决你的问题,请参考以下文章
在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?
Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)