使用 Perf 和 FlameGraph 进行系统性能分析
(2016 年写的一篇旧文,搬到这里了。)
Perf 是一款 Linux 平台的系统性能诊断和分析工具,通过它可以查看应用程序的运行性能,只是在图形方面表现的不足,好在有 Flame Graph.
Flame Graph 能够把 Perf 采集的数据转换为 svg 矢量图.
本文就简单说说它们的用法.
Perf
Perf 安装
Perf 使用
perf list
列出所有 perf 能够采样点的事件
perf stat
以精简的方式提供被调试程序的整体情况和汇总数据
perf top
列出所有进程,实时显示统计信息
perf record
记录单个函数级别的统计信息
perf report
显示统计结果
Flame Graph
FLame Graph 其实是一组 perl 脚本,用以将 perf 等工具获取的原始采样数据转换为 Flame Graph 能够识别的文件格式,除了 perf,还支持 Dtrace,Systemtap 以及 XCode Instruments 等工具.
Flame Graph 能够生成 svg 矢量图,X 轴代表采样总量,Y 轴代表栈深度.每个框代表一个栈里的函数,宽度代表占用 CPU 的总时间.较宽的框表示该函数运行时间较慢或调用次数较多,从而占用 CPU 时间多.
Flame Graph 脚本列表
使用示例
使用 perf record 生成采样数据
使用 perf script 对 perf.data 进行解析
将 perf.unfold 中的符号进行折叠
生成 svg 图
参考站点
https://www.ibm.com/developerworks/cn/linux/l-cn-perf1
https://github.com/brendangregg/FlameGraph
http://kernel.taobao.org/index.php?title=Documents/Perf_flame_graph
http://unix.stackexchange.com/questions/14227/do-i-need-root-admin-permissions-to-run-userspace-perf-tool-perf-events-ar
https://gist.github.com/trevnorris/9616784
http://www.infoq.com/cn/news/2015/08/java-flamegraph
版权声明: 本文为 InfoQ 作者【wong】的原创文章。
原文链接:【http://xie.infoq.cn/article/de4f97c0eff37a00dc43785fd】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论