Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/thlorenz/flamegraph
Generates flamegraphs with Node.js or in the browser.
https://github.com/thlorenz/flamegraph
Last synced: 21 days ago
JSON representation
Generates flamegraphs with Node.js or in the browser.
- Host: GitHub
- URL: https://github.com/thlorenz/flamegraph
- Owner: thlorenz
- License: mit
- Created: 2014-08-07T03:22:58.000Z (over 10 years ago)
- Default Branch: gh-pages
- Last Pushed: 2018-11-27T20:38:32.000Z (about 6 years ago)
- Last Synced: 2024-12-10T08:27:19.181Z (about 2 months ago)
- Language: HTML
- Homepage: http://thlorenz.github.io/flamegraph/web/
- Size: 7.73 MB
- Stars: 165
- Watchers: 10
- Forks: 28
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-nodejs - flamegraph - Generates flamegraphs with Node.js or in the browser. ![](https://img.shields.io/github/stars/thlorenz/flamegraph.svg?style=social&label=Star) (Repository / Performance Profiling/Analysis)
- awesome-github-star - flamegraph
README
# flamegraph [![build status](https://secure.travis-ci.org/thlorenz/flamegraph.png)](http://travis-ci.org/thlorenz/flamegraph)
[![testling badge](https://ci.testling.com/thlorenz/flamegraph.png)](https://ci.testling.com/thlorenz/flamegraph)
Generates flamegraphs with Node.js or in the browser.
```
cat dtrace.txt | flamegraph -t dtrace > flamegraph.svg
```[Try the online flamegraph app](http://thlorenz.github.io/flamegraph/web/)
[![assets/flamegraph.gif](assets/flamegraph.gif)](http://thlorenz.github.io/flamegraph/web/)
## 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](https://github.com/thlorenz/flamegraph/issues/21).```
flamegraphGenerates 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-.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:
- [use perf on linux](https://github.com/thlorenz/flamegraph/blob/master/generate-perf-data.md)
- [use dtrace on OSX](https://github.com/thlorenz/cpuprofilify#instructions)## 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:'
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](https://github.com/thlorenz/docme)*
## Kudos
This library is an adaptation of @brendangregg's [FlameGraph perl scripts](https://github.com/brendangregg/FlameGraph).
## License
MIT