注意: 不支持3.6+
安装
apt-get
apt-get install autoconf automake autotools-dev g++ pkg-config python-dev python3-dev libtool make
apt-get install libtool
yum install gcc-c++ libstdc++-devel
git clone https://github.com/uber/pyflame.git
cd pyflame
./autogen.sh
./configure
make && make install
==> 安装好后可执行文件在 ./src/pyflame
git clone https://github.com/brendangregg/FlameGraph
获取 flamegraph.pl,
chmod +x flamegraph.pl
yum install perl
使用
# Attach to PID 12345 and profile it for 1 second
pyflame -p 12345
# Attach to PID 768 and profile it for 5 seconds, sampling every 0.01 seconds
pyflame -s 5 -r 0.01 -p 768
# Run py.test against tests/, emitting sample data to prof.txt
pyflame -o prof.txt -t py.test tests/
# Generate flame graph for pid 12345; assumes flamegraph.pl is in your $PATH.
pyflame -s 5 -r 0.01 -p 768 | flamegraph.pl > myprofile.svg
横条越长的部分,表示被采样到的次数越多,从下往上可以看到在每一层上的函数耗时分布
perf 命令
Linux 系统原生提供的性能分析工具,会返回 CPU 正在执行的函数名以及调用栈(stack)
执行频率是 99Hz(每秒99次),如果99次都返回同一个函数名,那就说明 CPU 这一秒钟都在执行同一个函数,可能存在性能问题
perf record -F 99 -p 13204 -g --sleep 30
pyflame -p 3013 | perl flamegraph.pl > myprofile.svg