【问题标题】:Understanding v8/Node.js profiling report了解 v8/Node.js 分析报告
【发布时间】:2012-01-03 15:35:26
【问题描述】:

我正在尝试在 Node.js 中使用 --prof 选项。所以我在 linux-tick-processor 之后得到了以下报告:

 [Shared libraries]:
   ticks  total  nonlib   name
  20736   94.8%    0.0%  b78a5000-b78a6000
    574    2.6%    0.0%  /usr/lib/libv8.so.3.4.14.21
    117    0.5%    0.0%  /usr/bin/node
     62    0.3%    0.0%  /lib/i386-linux-gnu/i686/cmov/libc-2.13.so
      1    0.0%    0.0%  /lib/i386-linux-gnu/ld-2.13.so

 [JavaScript]:
   ticks  total  nonlib   name
      3    0.0%    0.8%  Stub: StringAddStub
      3    0.0%    0.8%  Builtin: A builtin from the snapshot {1}

 ...

   ticks parent  name
  20736   94.8%  b78a5000-b78a6000

    574    2.6%  /usr/lib/libv8.so.3.4.14.21
     94   16.4%    Function: ~QueryCommand.toBinary /storage/hoc/nodejs/lib/mongodb/commands/query_command.js:37
     94  100.0%      Function: ~Connection.send /storage/hoc/nodejs/lib/mongodb/connection.js:353
     94  100.0%        Function: ~Db.executeCommand /storage/hoc/nodejs/lib/mongodb/db.js:629

 ...

b78a5000-b78a6000 是什么?此行中的数字在每次运行时都不同。

totalnonlibparent 列是什么意思?我在上面找不到文档。

【问题讨论】:

  • b78a5000-b78a6000 是 VDSO。 linux-tick-processor 不理解它。

标签: node.js profiling v8


【解决方案1】:

我猜这个问题现在已经过时了。我也有兴趣分析我的节点应用程序,但不再有 --prof 开关(无论如何这似乎得到了粗略的信息)。

如果您使用 Unix(例如 Solaris),请查找 dtraceflamegraph。非常详细的剖析。不幸的是,我无法使用它,因为我运行的是 Linux (Ubuntu),而原始的 dtrace 尚未正确移植。

【讨论】:

  • 感谢您的通知。我也在使用 Linux,但问题没有解决(由于性能问题,项目仍然被冻结)。它认为应该有另一种解决方案。另外,我尝试nanotime 进行分析。确定问题不在我的代码范围内就足够了。
  • 现在有。在12.10 之前,它不是Ubuntu 中预编译二进制文件的一部分。
猜你喜欢
  • 1970-01-01
  • 2014-04-27
  • 2012-10-01
  • 2015-10-18
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
相关资源
最近更新 更多