您的位置:首页 > 运维架构 > Linux

Linux下perf性能测试火焰图只显示函数地址不显示函数名的问题

2016-12-26 17:16 1316 查看

Linux下perf性能测试火焰图只显示函数地址不显示函数名的问题

  最近在centos机器上安装perf对代码做性能测试。百度了一通,使用yum install perf* 这个命令就可以了,结果能正常运行、得到性能测试的报告,但是看不到代码
里面的函数名,这怎么分析啊?
  于是走上了一条百度路,一路排除命令没有问题,编译的时候加了-g,最后选择下载linux内核源码(下载地址:https://www.kernel.org/pub/linux/kernel),自己根据自己机器的内核版本下载相应的源码把),cd
到tools/perf 下,然后make。我没有仔细看make的输出信息(结果这是个坑),但是最终生成了一个perf的运行程序。以为万事大吉,继续进行性能测试。啊哈,跑了一遍,还是那个样子,当时我很沮丧。本着就是不信这个邪的原理,有重新下了一个版本的linux源码,重编一下,发现有报WARN,叫我yum 安装一些包,抱着试一试,按照WARN说的,逐一yum 相应的包,结果就好了。
  特此记录一下,反正我在网上没有找到我这种答案。其次,yum
b35a
install perf*,在按照一些博客说的方法下一些包,也没有解决我的问题。
  反正问题解决了。happy。

Linux 下性能分析工具:perf

地址:http://www.cnblogs.com/happyliu/p/6142929.html
http://sanwen.net/a/nzsrvoo.html

perf record -e cpu-clock -g -p 2548

-g 选项是告诉perf record额外记录函数的调用关系
-e cpu-clock 指perf record监控的指标为cpu周期
-p 指定需要record的进程pid

Flame Graph项目位于GitHub上:https://github.com/brendangregg/FlameGraph
获取相关辅助工具

1、第一步
$sudo perf record -e cpu-clock -g -p 28591
Ctrl+c结束执行后,在当前目录下会生成采样数据perf.data.
2、第二步
用perf script工具对perf.data进行解析
perf script -i perf.data &> perf.unfold
3、第三步
将perf.unfold中的符号进行折叠:
#./stackcollapse-perf.pl perf.unfold &> perf.folded
4、最后生成svg图:
./flamegraph.pl perf.folded > perf.svg

PS:建议下载内核源码,通过内核源码编译perf (地址:https://www.kernel.org/pub/linux/kernel),对tools/perf
进行make,有需要下载的组件,就下载

也可以考虑使用valgrind的性能分析,地址:http://www.cnblogs.com/zengkefu/p/5642991.html
但是感觉使用效果不怎么样
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息