Skip to content

Tools and resources regarding Node.js and Performance Tools Integration #4

Open
@thlorenz

Description

goal

I'm trying to gather resources and tools that make it easier to profile Node.js apps ideally by integrating with Chrome Dev tools and chrome://tracing.

what I found so far

Documentation of tools to analyse the data has been started here but the integration part with Node.js is still missing.

I tried to gather some free and open source tools that try to make this easier and would love to get some feedback and/or further tool suggestions. Pointers to any resources that document anything related are also greatly appreciated.

tools

Name In app initialization Instrumentation Description
memwatch Yes No Leak detection and heap usage and diffing.
heapdump Yes No Make a dump of the V8 heap for later inspection
profiler Yes Resume/Pause Access the V8 profiler from node.js DEPRECATED
v8-profiler Yes Start/Stop Provides node bindings for the v8 profiler and integration with node-inspector
node-gc Yes Handle Events Emits events from the V8 garbage collector to let you know when garbage collection occurs
gc-stats Yes Handle Events Emits GC stats events after GC occurred
webkit-devtools-agent Yes No Implementation of Chrome developer tools protocol. Only the heap and CPU profilers are working right now.
trace-viewer Yes Yes JavaScript frontend for Chrome about:tracing and Android systrace. It provides rich analysis and visualization capabilities for trace files, supporting both the linux kernel trace format and Chrome's base/trace_event
tracing-framework No Yes A set of libraries, tools, and visualizers for the tracing and investigation of complex web applications. It helps discover performance problems, track regressions, and build buttery-smooth 60fps web apps.
irhydra No No Tool that can display intermediate representations used by V8 and Dart VM optimizing compilers
cpu-profiler Yes Start/Stop Node bindings for the v8 cpu profiler
chrome-cpu-profiler Yes Start/Stop Allows viewing top down, bottom up and callgraphs of a node app in Google Chrome
perf-cpuprofile No No Converts linux perf tool output to .cpuprofile files readable by chromiums devtools

webkit-devtools-agent looks very promising, but doesn't show flamegraphs and has no time line support.

techniques

With a version of node that has a --log-timer-events as part of v8-options, run the app in profiling mode and load the resulting v8.log into Chrome at chrome://tracing.

Check for supported flag:

➝  node --v8-options | grep log_timer_events
  --log_timer_events (Time events including external callbacks.)

Profile app to generate v8.log including GC events.

node --prof --track_gc_object_stats --trace_gc_verbose --log_timer_events app.js

Loading into chrome://tracing will yield a flame chart similar to the below:

screen_shot_2014-06-17_at_9 08 24_pm

A detailed explanation is outlined in creating v8 profiling timeline plots although some of the information seems a bit outdated.

what I'm interested in

The idea is to find a way to use the built in Chrome tools to profile Node.js apps the same way as is currently possible
for JavaScript apps running in the browser.

Interesting metrics to gather:

Additionally integration with chrome://tracing by passing flags like --log_timer_events are of interest.

Both, CLI and GUI support would be nice to have as well as real-time and historical data.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions