On Thu, Aug 8, 2013 at 12:30 PM, Zoid <andy.melni...@gmail.com> wrote:
> I ran my app with --prof key to create v8.log. Then I installed node-tick
> and ran it to analyze the log. It turned out that most of the time is spent
> in EXTERNAL VM state.
>
> Node is 0.8.22
>
> I interpret the node-tick log as the app spends most time (335 / 419 = 80%)
> in External VM state running unknown code from addresses b77d0000-b77d1000
>
> How do I figure out what's going on?
>
> -- Andy
>
>
> [foo@bar pp] ~/node_modules/.bin/node-tick-processor -e | grep -Fv "Code
> move event for unknown code" | less
>
> Statistical profiling result from v8.log, (419870 ticks, 0 unaccounted,
> 57996 excluded).
>
>  [Shared libraries]:
>    ticks  total  nonlib   name
>   335228   79.8%    0.0%  b77d0000-b77d1000
>   26541    6.3%    0.0%  /usr/bin/node
>      66    0.0%    0.0%  /usr/lib/libpthread-2.17.so
>      25    0.0%    0.0%  /usr/lib/libc-2.17.so
>       5    0.0%    0.0%  /usr/lib/libstdc++.so.6.0.18
>       4    0.0%    0.0%  /usr/lib/libcrypto.so.1.0.0
>       3    0.0%    0.0%  /usr/lib/libgcc_s.so.1
>       2    0.0%    0.0%  /usr/lib/libssl.so.1.0.0
>
>  [JavaScript]:
>    ticks  total  nonlib   name
>
>  [C++]:
>    ticks  total  nonlib   name
>
>  [GC]:
>    ticks  total  nonlib   name
>   15866    3.8%
>
>  [Bottom up (heavy) profile]:
>   Note: percentage shows a share of a particular caller in the total
>   amount of its parent calls.
>   Callers occupying less than 2.0% are not shown.
>
>    ticks parent  name
>   335228   79.8%  b77d0000-b77d1000
>
>   26541    6.3%  /usr/bin/node

That's the vDSO, a memory page that's shared between a process and the kernel.

When your program spends most of its time in the vDSO, it means it's
spending most of its time in system calls - most likely in
epoll_wait(), the system call that powers the event loop.  That's
expected, particularly when the node process is mostly idle.

If you want to investigate further: `strace -c node script.js` prints
a tally of the system calls the process makes and the wall clock time
spent in them.  `time node script.js` prints a breakdown of user vs.
kernel CPU and wall clock time (among other things.)

-- 
-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to nodejs@googlegroups.com
To unsubscribe from this group, send email to
nodejs+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to nodejs+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to