pyflame使用

pyflame介绍

uber开源的一款工具,利用ptrace生成渲染图,用于分析性能瓶颈

https://github.com/uber/pyflame

1.安装

系统依赖(ubuntu系统)

sudo apt-get install autoconf automake autotools-dev g++ pkg-config python-dev python3-dev libtool make

安装pyflame

git clone https://github.com/uber/pyflame.git
cd pyflame
./autogen.sh
./configure
make
make install

安装flamegraph

git clone https://github.com/brendangregg/FlameGraph.git

2.执行

sudo ./src/pyflame -s 40 -r 0.1 –abi=34 -p 32403 | ./FlameGraph/flamegraph.pl > myprofile.svg

-s 60, 总采样时间为 60s
-r 0.01, 以0.01s 的频率做采样
-p, 要采样的进程ID
–abi, 指定当前环境的py版本

3.问题

1.Failed to seize PID
执行命令需要以sudo启动, 此问题为权限问题

2.py2或者py3的问题, 可能pyflame编译到了py2环境下
cat /proc/{YOUR_PID}/maps
查看是否是对应的py版本

4.参考

https://stackoverflow.com/questions/39919405/getting-errors-when-trying-to-run-pyflame-inside-python-script
https://github.com/uber/pyflame/blob/master/tests/test_end_to_end.py
https://zhuanlan.zhihu.com/p/28078824

效果图:

坚持原创技术分享,您的支持将鼓励我继续创作!