about summary refs log tree commit diff
path: root/tools/perf-flamegraph-pid/perf-flamegraph-pid.sh
blob: 141ceec12d25ea8927b18b790f4a3ec030d31961 (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}"