Over the past few weeks, we did a major overhaul of pprof.me to get it to be up to date with all the improvements that we're making to Parca, especially the interactive visualizations of profiles. In this article, we'll see a summary of the improvements we did.
More than a year ago, we launched pprof.me, a free profile-sharing service that allows you to upload a profile, get a link to share it with others and visualize the profile with various visualization types.
Technically, it was powered by Conprof, a continuous profiler built by Frederic Branczyk, which was later retired and superseded by the Parca project. We were using Conprof's profile storage format and visualization components to build pprof.me, which was great at that point.
But over the past year, we made a ton of improvements to Parca's visualization components in terms of interactivity, usability, and performance. Therefore, we wanted to bring all these improvements to pprof.me as well and ultimately only maintain a single set of components.
In short, pprof.me now has all the features that are available in Parca's visualization component, but here's a summary:
- Interactive visualization types: Flamegraph and Top table. Soon to come are the other visualization types like the Callgraph.
- Search and filter nodes for specific function names.
- Quick snapshot (Function name, File, Line number, Build ID, etc.) on hovering a node.
- Ability to download the profile in pprof format.
- And finally, dark mode UI!
We have also added support for uploading profiles from the CLI. You can now upload profiles to pprof.me from the command line using our open-source pprofme tool.
Install it by running the following commands:
# Download binary for your OS and architecture curl -LO https://github.com/polarsignals/pprofme/releases/latest/download/pprofme_$(uname)_$(uname -m) # Verify the checksum curl -sL https://github.com/polarsignals/pprofme/releases/latest/download/pprofme_checksums.txt | shasum --ignore-missing -a 256 --check # Make the binary executable chmod a+x pprofme_$(uname)_$(uname -m) # Move to path sudo mv pprofme_$(uname)_$(uname -m) /usr/local/bin/pprofme
Run the pprofme upload with a path to a pprof profile, enter a description and the sharing link will be printed to your terminal, and it will be opened in your default browser.
pprofme upload -d "<Profile Description>" ./path/to/profile.pb.gz
$ pprofme upload -d "Fibonacci in Go" ./fibonacci.pb.gz https://pprof.me/779de8f
If you like the new pprof.me and want to use it to complement your tools/services, please do! We have a public gRPC API (details below) that you can use to upload profiles and get a link to share with others.
The gRPC API is available at `api.pprof.me:443`.
You can find the API documentation here: https://buf.build/parca-dev/parca/docs/main:parca.share.v1alpha1.
We're planning to add more features to pprof.me based on the usage. But here is what we have in mind so far:
- Comparing Profiles
- Authenticated uploads and sharing
- And much more!
We always welcome feedback and suggestions, so please feel free to reach out to us on our Discord or raise a GitHub Issue.