Skip to content

Instantly share code, notes, and snippets.

@siddontang
Created March 27, 2019 02:11
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save siddontang/a585261e8a00917a9f38b0d172af2e60 to your computer and use it in GitHub Desktop.
Save siddontang/a585261e8a00917a9f38b0d172af2e60 to your computer and use it in GitHub Desktop.
tikv profile

Common

#!/bin/bash

perf record -F 99 -p $1 -g -- sleep 60
perf script > out.perf
/opt/FlameGraph/stackcollapse-perf.pl out.perf > out.folded
/opt/FlameGraph/flamegraph.pl out.folded > cpu.svg
curl --upload-file ./cpu.svg https://transfer.sh/cpu.svg

TiKV CPU

perf record -F 99 -p $1 --call-graph=dwarf -- sleep 60
perf script | /opt/tidb-inspect-tools/tracing_tools/perf/fold-tikv-threads-perf.pl | /opt/FlameGraph/stackcollapse-perf.pl | /opt/FlameGraph/flamegraph.pl > cpu.svg
curl --upload-file ./cpu.svg https://transfer.sh/cpu.svg

TiKV CPU Graph

perf record -F 99 -p $1 --call-graph=dwarf -- sleep 60
perf script | c++filt | /opt/gprof2dot.py -f perf | dot -Tsvg -o cpu_graph.svg
curl --upload-file ./cpu_graph.svg https://transfer.sh/cpu_graph.svg

CPU Tenancy

perf record -F 99 -p $1 -e cycles -a -- sleep 20
perf script -F comm,pid,tid,cpu,time

centos 7

wget https://github.com/brendangregg/FlameGraph/archive/master.zip
unzip master.zip
sudo mv FlameGraph-master/ /opt/FlameGraph

wget https://github.com/pingcap/tidb-inspect-tools/archive/master.zip
unzip master.zip
sudo mv tidb-inspect-tools-master /opt/tidb-inspect-tools

ubuntu

sudo apt-get -y install unzip
sudo apt-get -y install linux-tools-$(uname -r)
wget https://github.com/brendangregg/FlameGraph/archive/master.zip
unzip master.zip
sudo mv FlameGraph-master/ /opt/FlameGraph

wget https://github.com/pingcap/tidb-inspect-tools/archive/master.zip
unzip master.zip
sudo mv tidb-inspect-tools-master /opt/tidb-inspect-tools

gprf2dot

sudo yum install graphviz

sudo apt-get install graphviz

wget https://raw.githubusercontent.com/jrfonseca/gprof2dot/master/gprof2dot.py

# mostly in our machines, we don’t install Python3
sed -i -e 's/env python3/env python2/g' gprof2dot.py

chmod +x gprof2dot.py

sudo mv gprof2dot.py /opt/gprof2dot.py
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment