Translate symbol names generated by `--basic-perf-prof` into JavaScript names
npm install perf-symTranslate symbol names generated by --basic-perf-prof into JavaScript names.
__You can use this tool to generate Flamegraphs on OSX and Linux__.
``sh`
[sudo] npm i -g perf-sym stackvis
`
cat stacks.out | perf-sym
--relative=[path] -r=[path] [false]
--keep-addr -k [false]
`
Your process needs to shut down properly to generate the symbol map, so
instrument it with:
`js
console.error('process.pid', process.pid)
// Cleanly shut down process on SIGINT to ensure that perf-
process.on('SIGINT', onSIGINT)
function onSIGINT () {
// IMPORTANT to log on stderr, to not clutter stdout which is purely for data, i.e. dtrace stacks
console.error('Caught SIGINT, shutting down.')
// close any servers you have opened
server.close()
// clean exit
process.exit(0)
}
`
#### Requirements
Run your application, in one terminal:
``
node --perf-basic-prof index.jsthis should emit the PID of the process to stdout
In another terminal, run:
``
sudo profile_1ms.d -p YOURPID > stacks.out
In another terminal, run a load/soak test:
``
wrk -c 100 -d 10 http://localhost:3000
When the load/soak test is finished, hit CTRL-C in the terminal running
your application.
now run:
``
cat stacks.out | perf-sym YOURPID | stackvis perf > flamegraph.html
open flamegraph.html
#### Requirements
Run your application, in one terminal:
``
node --perf-basic-prof index.jsthis should emit the PID of the process to stdout
In another terminal, run:
``
perf record -p YOURPID -i -g -e cycles:u; perf script > stacks.out
In another terminal, run a load/soak test:
``
wrk -c 100 -d 10 http://localhost:3000
When the load/soak test is finished, hit CRL-C in the terminal running
your application.
now run:
`
cat stacks.out | perf-sym YOURPID | stackvis perf > flamegraph.html
open flamegraph.html
``
* David Mark Clements
* Matteo Collina
* sponsored by nearForm
* with thanks to thlorenz and his cpuprofilify module for inspiration and snippets and profile_1ms.d
MIT