flamegraph
Generates flamegraphs with Node.js or in the browser.
cat dtrace.txt | flamegraph -t dtrace > flamegraph.svg
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
-
(arr, opts) → {string}
flamegraph -
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:'
Returns:
svg the rendered svg
- Type
- string
-
(stream, opts) → {ReadableStream}
flamegraph::fromStream -
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
-
(collapsedLines, opts) → {string}
flamegraph::svg -
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