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

效果图: