Socket
Socket
Sign inDemoInstall

perf-sym

Package Overview
Dependencies
Maintainers
2
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

perf-sym

Translate symbol names generated by `--basic-perf-prof` into JavaScript names


Version published
Weekly downloads
7.9K
increased by13.29%
Maintainers
2
Weekly downloads
 
Created
Source

perf-sym

Translate symbol names generated by --basic-perf-prof into JavaScript names. You can use this tool to generate Flamegraphs on OSX and Linux.

Install

[sudo] npm i -g perf-sym stackvis

Usage

  cat stacks.out | perf-sym <pid>

  --relative=[path] -r=[path] [false]
  --keep-addr -k [false]

Generate a flamegraph

Instrument your code

Your process needs to shut down properly to generate the symbol map, so instrument it with:

console.error('process.pid', process.pid)

// Cleanly shut down process on SIGINT to ensure that perf-<pid>.map gets flushed
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)
}

OS X

Requirements

Run your application, in one terminal:

node --perf-basic-prof index.js
# this 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

Linux

Requirements

Run your application, in one terminal:

node --perf-basic-prof index.js
# this 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

Contributors

  • David Mark Clements
  • Matteo Collina

Acknowledgements

  • sponsored by nearForm
  • with thanks to thlorenz and his cpuprofilify module for inspiration and snippets and profile_1ms.d

License

MIT

FAQs

Package last updated on 05 Feb 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc