使用v8对nodejs进行性能分析

11

我有一个Node应用程序,我想使用Node分析器对其进行分析。

所以我首先运行了:

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

有谁能帮助我弄清楚发生了什么?


1
不是答案,但是Ben Noordhuis正在帮我解决同样的问题: https://groups.google.com/forum/?fromgroups=#!topic/nodejs/4NMoiPd2K6s - jcollum
3个回答

7
日志文件格式似乎经常变化,因此您需要确保使用正确的v8版本。例如,如果配置文件日志是由node v0.10.18生成的,则必须使用v8版本3.14.5的tick处理器进行分析。要查找给定节点版本构建的v8版本,请检查节点源分发中的deps/v8/ChangeLog(节点自己的更改日志在这方面似乎有点不可靠)。

0

请确保您没有在运行64位版本的Node时使用32位版本的分析工具,反之亦然。我曾经因为不小心这样做而遇到过类似的问题。


@Viclib - 从Node网站下载32位或64位版本,然后在编译v8工具时按照它们的构建说明为32位或64位环境构建它们。我发现获取32位节点并构建32位版本的分析工具是最容易做到的。 - Tim

0

另一种分析节点应用程序的选项是使用VTune放大器,而不是内部嵌入在Node.js中的V8分析器。在这种情况下,您将看到性能指标如何通过函数源代码分布。V8分析器现在无法做到这一点。查看此post以了解如何执行此操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接