npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

perf-sym

v2.0.3

Published

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

Downloads

41,986

Readme

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