我有一个节点应用程序,我想使用节点分析器进行分析。
首先我跑了:
node --prof v8test.js
然后,我下载了v8工具
svn checkout http://v8.googlecode.com/svn/trunk/ v8;
make dependencies;
make native;
然后尝试分析创建的文件(v8.log)
tools/linux-tick-processor ../v8.log
但我得到了很多:
Code move event for unknown code: 0x289dd8475560
Code move event for unknown code: 0x289dd84758e0
Code move event for unknown code: 0x289dd8479280
Code move event for unknown code: 0x289dd8482980
Code move event for unknown code: 0x289dd84c2a80
line 718730: unknown code state: undefined
line 718731: unknown code state: undefined
line 739575: unknown code state: undefined
line 739577: unknown code state: undefined
有人可以帮我弄清楚发生了什么吗?
答案 0 :(得分:7)
日志文件格式似乎经常发生变化,因此您需要确保使用的是正确版本的v8。例如,如果使用节点v0.10.18生成配置文件日志,则必须使用v8版本3.14.5的tick处理器对其进行分析。要找出构建给定版本节点的v8版本,可以在节点源代码分发中检查deps/v8/ChangeLog
(节点自身的更改日志在这方面似乎有点不可靠)。
答案 1 :(得分:0)
确保您没有使用32位版本的性能分析工具运行64位版本的节点,反之亦然。当我偶然做到这一点时,我遇到了类似的问题。
答案 2 :(得分:0)
分析节点应用程序的另一个选项是使用VTune Amplifier而不是嵌入在Node.js中的内部V8分析器。在这种情况下,您将看到性能指标是如何通过函数的源代码分发的。 V8配置文件现在无法做到这一点。看看这个post,看看你是怎么做到的。