about summary refs log tree commit diff
path: root/tools/perf-flamegraph-pid/perf-flamegraph-pid.sh
blob: 2ca3d16131b34571f2e808529bab0937ced6b5fb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/env bash

set -euo pipefail

OUT_DIR="${HOME}/workspace/debug/flamegraph"
OUT_DATA="${OUT_DIR}/$(date +%y%m%d-%H%M%S).data"
OUT_SVG="${OUT_DIR}/$(date +%y%m%d-%H%M%S).svg"

mkdir -p "${OUT_DIR}"

# record the data with perf. We need to run this with sudo to get all
# the privileges we need.
sudo perf record -g --call-graph dwarf --freq max --output "${OUT_DATA}" "$@"

# give me ownership of the file
sudo chown "${USER}" "${OUT_DATA}"

perf script --input "${OUT_DATA}" |
  stackcollapse-perf.pl |
  flamegraph.pl >"${OUT_SVG}"