Generates flamegraphs with Node.js or in the browser.
HTML JavaScript Perl CSS
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

README.md

flamegraph build status

testling badge

Generates flamegraphs with Node.js or in the browser.

cat dtrace.txt | flamegraph -t dtrace > flamegraph.svg

Try the online flamegraph app

assets/flamegraph.gif

Installation

npm install flamegraph

Usage

Requires Node.js version 0.11.13 or higher.

NOTE currently not working with cpu profiles saved from Chrome DevTools due to a format change. For more info and to help fixing it please see this issue.

flamegraph <options>

Generates a flamegraph from the callgraph data of the given `inputtype` that is streamed into it.

OPTIONS:

  --inputtype -t      the type of callgraph 'perf | cpuprofile'

  --file -f           the input csv file (may also be piped)
  --output -o         the output svg file (may also be displayed in stdout)
  --map -m            a mapping / symbols file, named perf-<pid>.map, generated using node --perf-basic-prof

  --fonttype          font family used                  default: 'Verdana'
  --fontsize          base text size                    default: 12
  --imagewidth        max width, pixels                 default: 1200
  --frameheight       max height is dynamic             default: 16.0
  --fontwidth         avg width relative to fontsize    default: 0.59
  --minwidth          min function width, pixels        default: 0.1
  --countname         what are the counts in the data?  default: 'samples'
  --colors            color theme                       default: 'hot'
  --bgcolor1          background color gradient start   default: '#eeeeee'
  --bgcolor2          background color gradient stop    default: '#eeeeb0'
  --timemax           (override the) sum of the counts  default: Infinity
  --factor            factor to scale counts by         default: 1
  --hash              color by function name            default: true
  --titletext         centered heading                  default: 'Flame Graph'
  --nametype          what are the names in the data?   default: 'Function:'

  --removenarrows     removes narrow functions instead of adding a 'hidden' class   default: true
  --internals         include internal functions        default: false
  --optimizationinfo  include optimization indicators   default: false

  --help      -h  print this help message

EXAMPLE:

  cat dtrace.txt | flamegraph -t dtrace > flamegraph.svg

The input data needs to be generated as follows:

API

flamegraph(arr, opts) → {string}

Converts an array of call graph lines into an svg document.

Parameters:
Name Type Description
arr Array.<string>

input lines to render svg for

opts Object

objects that affect the visualization

Properties
Name Type Description
profile Object

options passed to cpuprofilify @see cpuprofilify.convert params

fonttype string

type of font to use default: 'Verdana'

fontsize number

base text size default: 12

imagewidth number

max width, pixels default: 1200

frameheight number

max height is dynamic default: 16.0

fontwidth number

avg width relative to fontsize default: 0.59

minwidth number

min function width, pixels default: 0.1

countname string

what are the counts in the data? default: 'samples'

colors string

color theme default: 'hot'

bgcolor1 string

background color gradient start default: '#eeeeee'

bgcolor2 string

background color gradient stop default: '#eeeeb0'

timemax number

(override the) sum of the counts default: Infinity

factor number

factor to scale counts by default: 1

hash boolean

color by function name default: true

titletext string

centered heading default: 'Flame Graph'

nametype string

what are the names in the data? default: 'Function:'

Source:
Returns:

svg the rendered svg

Type
string

flamegraph::fromStream(stream, opts) → {ReadableStream}

Converts a stream of call graph lines into an svg document. Not truly streaming, concats all lines before processing.

Example:

var fromStream = require('flamegraph/from-stream');
fromStream(process.stdin, opts).pipe(process.stdout);
Parameters:
Name Type Description
stream ReadableStream

that will emit the call graph lines to be parsed

opts Object

same as flamegraph

Source:
Returns:

stream that emits the lines of generated svg

Type
ReadableStream

flamegraph::svg(collapsedLines, opts) → {string}

Creates a context from a call graph that has been collapsed (stackcollapse-*) and renders svg from it.

Parameters:
Name Type Description
collapsedLines Array.<string>

callgraph that has been collapsed

opts Object

options

Source:
Returns:

svg

Type
string

generated with docme

Kudos

This library is an adaptation of @brendangregg's FlameGraph perl scripts.

License

MIT