Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions apps/site/pages/en/learn/diagnostics/flame-graphs.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,19 @@ perf record -e cycles:u -g -- node --perf-basic-prof --interpreted-frames-native

4. Disregard warnings unless they're saying you can't run perf due to missing packages; you may get some warnings about not being able to access kernel module samples which you're not after anyway.
5. Run `perf script > perfs.out` to generate the data file you'll visualize in a moment. It's useful to [apply some cleanup](#filtering-out-nodejs-internal-functions) for a more readable graph
6. Clone Brendan Gregg's FlameGraph tools: https://github.com/brendangregg/FlameGraph
7. Run `cat perfs.out | ./FlameGraph/stackcollapse-perf.pl | ./FlameGraph/flamegraph.pl --colors=js > profile.svg`
6. Preview or generate the flame graph:

- Browser preview (no local setup required):

Now open the flame graph file in your favorite browser and watch it burn. It's color-coded so you can focus on the most saturated orange bars first. They're likely to represent CPU heavy functions.
- Upload the generated `perfs.out` file to <https://flamegraph.com> to visualize the flame graph.

- Clone Brendan Gregg's FlameGraph tools: https://github.com/brendangregg/FlameGraph

- Run `cat perfs.out | ./FlameGraph/stackcollapse-perf.pl | ./FlameGraph/flamegraph.pl --colors=js > profile.svg` and now open the flame graph file in your favorite browser and watch it burn

Worth mentioning - if you click an element of a flame graph a it will zoom-in on the section you clicked.
Once the flame graph is rendered, inspect the most saturated orange bars first. They're likely to represent CPU heavy functions.

Worth mentioning - if you click an element of a flame graph it will zoom-in on the section you clicked.

### Using `perf` to sample a running process

Expand Down
Loading