Converts output of various pro
Converts output of various profiling/sampling tools to the .cpuprofile format so it can be loaded into Chrome DevTools.
Table of Contents generated with DocToc
Installation Instructions Example Usage cpuprofilify andperf
API
CpuProfilifier()
CpuProfilifier::convert(trace, opts) → {Object}
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 <app>' | cpuprofilify > out.cpuprofile
sudo profile_1ms.d -p <process id> | 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 <app> && 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.
using DTrace script
# In Terminal A ➝ sudo profile_1ms.d -c 'node --perf-basic-prof example/fibonacci' | \ cpuprofilify > /tmp/example.cpuprofile pid <process-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 <process-pid>
Now open /tmp/example.cpuprofile
in Chrome DevTools Profiles - Load
NOTE: in order to try the above example please clone this repository.
Usagecat trace.txt | cpuprofilify <options> > my.cpuprofile
Converts 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 help
EXAMPLE:
Generate cpuprofile from DTrace data with default options
using higher switchrate in order to deal with large amount of data being emitted
sudo profile_1ms.d -x switchrate=1000hz -c <command> | cpuprofilify > out.cpuprofile
Generate cpuprofile from DTrace data with default options keeping v8 internals
sudo profile_1ms.d -c <command> | cpuprofilify --v8internals > out.cpuprofile
Generate cpuprofile from DTrace data with default options filtering v8 gc events
sudo profile_1ms.d -c <command> | cpuprofilify --nov8gc > out.cpuprofile
cpuprofilify and perf
use this on any system that doesn't have DTrace, but perf instead like Linux
perf record -e cycles:u -g -- node --perf-basic-prof myapp.js
perf script | cpuprofilify > out.cpuprofile
API
Creates new CpuProfilifier Converts the given trace taking according to the given opts. a trace generated via a map containing symbols information, if not given it will be read from /tmp/perf-.map. type of input stacks that have only one line are ignored unless this flag is set JS optimization info is removed unless this flag is set (default: false) unresolved addresses like sysinternals like v8internals like when v8internals are filtered, garbage collection info is as well unless this flag set (default: true) an cpuprofile presentation of the given tracevar cpuprofilifier = require('cpuprofilifier');
var cpuprofile = cpuprofilifier().convert(trace);
fs.writeFileSync('/tmp/my.cpuprofile', JSON.stringify(cpuprofile));
Parameters:
Source:
index.js
,
lineno 30
Returns:
Name
Type
Argument
Description
trace
Array.<String>
perf script
or the profile_1ms.d
DTrace script
opts
Object
<optional>
Properties
Name
Type
Description
map
string
type
string
perf|dtrace
. If not supplied it will be detected.
shortStack
Boolean
optimizationinfo
Boolean
unresolveds
Boolean
0x1a23c
are filtered from the trace unless this flag is set (default: false)
sysinternals
Boolean
__lib_c_start...
are filtered from the trace unless this flag is set (default: false)
v8internals
Boolean
v8::internal::...
are filtered from the trace unless this flag is set (default: false)
v8gc
Boolean
generated with docme
LicenseMIT
版权声明:
1、该文章(资料)来源于互联网公开信息,我方只是对该内容做点评,所分享的下载地址为原作者公开地址。2、网站不提供资料下载,如需下载请到原作者页面进行下载。