Понимание отчета о профилировании v8 / Node.js - PullRequest
3 голосов
/ 22 ноября 2011

Я пытаюсь использовать опцию --prof с Node.js. Поэтому после 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? Числа в этой строке различны при каждом запуске.

Что означают столбцы total, nonlib, parent? Я не могу найти документы на нем.

Ответы [ 2 ]

2 голосов
/ 23 января 2013

Поскольку пакет nodejs (ранее node) в Ubuntu 12.10 теперь предварительно скомпилирован с параметрами профилирования V8, теперь мы можем использовать функцию профилирования nodeTime .

Добавьте require('nodetime').profile() к вашему узлу.Вам не нужно запускать узел, используя --prof, все это работает внутри.

Под tools вы найдете CPU profiler.Запустите слушатель и выполните запрос вашего узла.

enter image description here

1 голос
/ 14 августа 2012

Я предполагаю, что этот вопрос устарел. Я также заинтересован в профилировании моего приложения узла, но больше нет переключателя --prof (который, кажется, все равно получает грубую информацию).

Ищите dtrace и flamegraph, если вы используете Unix (например, Solaris). Очень подробное профилирование. К сожалению, я не могу использовать его, потому что я использую Linux (Ubuntu), а оригинальный dtrace еще не правильно портирован.

...