yum install perf
git clone https://github.com/brendangregg/FlameGraph.git
touch perf.sh
pids=$(pgrep $1 | head -n 4)
rm -rf ./tmp_graph
mkdir ./tmp_graph
for pid in $pids; do
echo "-- collecting data for $pid"
perf record -F 600 -p $pid -g -- sleep 5
perf script -i perf.data > ./tmp_graph/perf.unfold.$pid
./flame/stackcollapse-perf.pl ./tmp_graph/perf.unfold.$pid > ./tmp_graph/perf.folded.$pid
done
cat ./tmp_graph/perf.folded.* > ./tmp_graph/all.folded
./flame/flamegraph.pl ./tmp_graph/all.folded > ./all.svg
sh perf.sh 进程名
rm -rf ./tmp_graph
mkdir ./tmp_graph
pid=$1
echo "-- collecting data for $pid"
perf record -F 600 -p $pid -g -- sleep 5
perf script -i perf.data > ./tmp_graph/perf.unfold.$pid
./flame/stackcollapse-perf.pl ./tmp_graph/perf.unfold.$pid > ./tmp_graph/perf.folded.$pid
done
cat ./tmp_graph/perf.folded.* > ./tmp_graph/all.folded
./flame/flamegraph.pl ./tmp_graph/all.folded > ./all.svg