Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/thlorenz/cpuprofilify
Converts output of various profiling/sampling tools to the .cpuprofile format so it can be loaded into Chrome DevTools.
https://github.com/thlorenz/cpuprofilify
Last synced: 28 days ago
JSON representation
Converts output of various profiling/sampling tools to the .cpuprofile format so it can be loaded into Chrome DevTools.
- Host: GitHub
- URL: https://github.com/thlorenz/cpuprofilify
- Owner: thlorenz
- License: mit
- Created: 2015-01-29T03:21:28.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2017-04-20T14:35:08.000Z (over 7 years ago)
- Last Synced: 2024-11-07T16:51:11.554Z (about 1 month ago)
- Language: JavaScript
- Homepage: https://github.com/thlorenz/cpuprofilify
- Size: 1.55 MB
- Stars: 167
- Watchers: 7
- Forks: 16
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-chrome-devtools - cpuprofilify - Converts output of various profiling/sampling tools to the `.cpuprofile` format. (DevTools tooling and ecosystem / CPU profile)
README
# cpuprofilify [![build status](https://secure.travis-ci.org/thlorenz/cpuprofilify.png?branch=master)](http://travis-ci.org/thlorenz/cpuprofilify)
[![testling badge](https://ci.testling.com/thlorenz/cpuprofilify.png)](https://ci.testling.com/thlorenz/cpuprofilify)
Converts output of various profiling/sampling tools to the .cpuprofile format so it can be loaded into Chrome DevTools.
![screenshot](assets/cpuprofilify.gif)
**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)*
- [Installation](#installation)
- [Instructions](#instructions)
- [Example](#example)
- [Usage](#usage)
- [cpuprofilify and `perf`](#cpuprofilify-and-perf)
- [API](#api)
- [CpuProfilifier()](#cpuprofilifier)
- [CpuProfilifier::convert(trace, opts) → {Object}](#cpuprofilifierconverttrace-opts-→-object)
- [License](#license)## Installation
npm install -g cpuprofilify
## Instructions
cpuprofilify installs two binary scripts:
- **`profile_1ms.d`**: DTrace script that samples your process, use either of the following to generate a trace
- `sudo profile_1ms.d -c 'node --perf-basic-prof ' | cpuprofilify > out.cpuprofile`
- `sudo profile_1ms.d -p | cpuprofilify > out.cpuprofile`
- **`cpuprofilify`**: which will convert a *perf* or *DTrace* trace into a `.cpuprofile` importable into Chrome DevTools
- `perf record -e cycles:u -g -- node --perf-basic-prof && perf script | cpuprofilify > out.cpuprofile`Use the `perf record` and `perf script` commands on Linux to generate input to cpuprofilify and the provided
`profile_1ms.d` script to do so on OSX via dtrace.## Example
*using DTrace script*
```sh
# In Terminal A
➝ sudo profile_1ms.d -c 'node --perf-basic-prof example/fibonacci' | \
cpuprofilify > /tmp/example.cpuprofile
pid
HTTP server listening on port 8000# In Terminal B
➝ ab -n 6 -c 2 http://:::8000/1000/
This is ApacheBench, Version 2.3 <$Revision: 1554214 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking :: (be patient).....done
[ .. ]➝ sudo kill
```Now open `/tmp/example.cpuprofile` in Chrome DevTools *Profiles - Load*
**NOTE:** in order to try the above example please clone this repository.
## Usage
```
cat trace.txt | cpuprofilify > my.cpuprofileConverts the given trace taking according to the given opttions
OPTIONS:
--unresolveds , --nounresolveds unresolved addresses like `0x1a23c` are filtered from the trace unless this flag is set (default: false)
--sysinternals , --nosysinternals sysinternals like `__lib_c_start...` are filtered from the trace unless this flag is set (default: false)
--v8internals , --nov8internals v8internals like `v8::internal::...` are filtered from the trace unless this flag is set (default: false)
--v8gc , --nov8gc when v8internals are filtered, garbage collection info is as well unless this flag set (default: true)--shortStack , --noshortStack stacks that have only one line are ignored unless this flag is set (default: false)
--optimizationinfo, --nooptimizationinfo JS optimization info is removed unless this flag is set (default: false)--type type of input `perf|dtrace`. If not supplied it will be detected.
--help print this helpEXAMPLE:
Generate cpuprofile from DTrace data with default options
using higher switchrate in order to deal with large amount of data being emittedsudo profile_1ms.d -x switchrate=1000hz -c | cpuprofilify > out.cpuprofile
Generate cpuprofile from DTrace data with default options keeping v8 internals
sudo profile_1ms.d -c | cpuprofilify --v8internals > out.cpuprofile
Generate cpuprofile from DTrace data with default options filtering v8 gc events
sudo profile_1ms.d -c | cpuprofilify --nov8gc > out.cpuprofile
```## cpuprofilify and `perf`
*use this on any system that doesn't have DTrace, but perf instead like Linux*
```sh
perf record -e cycles:u -g -- node --perf-basic-prof myapp.js
perf script | cpuprofilify > out.cpuprofile
```## API
CpuProfilifier()Creates new CpuProfilifier
CpuProfilifier::convert(trace, opts) → {Object}Converts the given trace taking according to the given opts.
var cpuprofilifier = require('cpuprofilifier');
var cpuprofile = cpuprofilifier().convert(trace);
fs.writeFileSync('/tmp/my.cpuprofile', JSON.stringify(cpuprofile));Parameters:
Name
Type
Argument
Description
trace
Array.<String>
a trace generated via
perf script
or theprofile_1ms.d
DTrace script
opts
Object
<optional>
Properties
Name
Type
Description
map
string
a map containing symbols information, if not given it will be read from /tmp/perf-.map.
type
string
type of input
perf|dtrace
. If not supplied it will be detected.
shortStack
Boolean
stacks that have only one line are ignored unless this flag is set
optimizationinfo
Boolean
JS optimization info is removed unless this flag is set (default: false)
unresolveds
Boolean
unresolved addresses like
0x1a23c
are filtered from the trace unless this flag is set (default: false)
sysinternals
Boolean
sysinternals like
__lib_c_start...
are filtered from the trace unless this flag is set (default: false)
v8internals
Boolean
v8internals like
v8::internal::...
are filtered from the trace unless this flag is set (default: false)
v8gc
Boolean
when v8internals are filtered, garbage collection info is as well unless this flag set (default: true)
Returns:
an cpuprofile presentation of the given trace
Type
Object*generated with [docme](https://github.com/thlorenz/docme)*
## License
MIT