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

Linux 下 profile 技巧

2015-09-17 19:07 555 查看

Linux 下 profile 技巧

用 profiler 来查看程序最耗时的部分, 以便在正确的地方优化是很重要的.

zoom

一个图形化的 profiler, 非常简单, 而且好用, 入门教程, 注意编译的时候加上 ‘-O2 -g’ 参数以开启优化并保留符号列表. 最简单的用法就是启动 zoom 后点击 start, 然后马上运行你要 profile 的程序, 程序运行结束后点击 stop. profile 结果显示为 tree 型, 每个函数的执行时间和其调用关系都显示的很清楚, 还可以看源代码和汇编代码, 并给出优化提示.

Gprof

编译参数(CXXFLAGS)和链接参数(LDFLAGS)都加上 “-pg” 标志;

正常运行程序, 速度比没加 -pg 参数时慢, 默认会输出一个 gmon.out 文件

运行 gprof, 以第二步程序的可执行文件作为其参数, 重定向输出:

$ gprof myprog > profile.txt


分析 profile.txt 文件, profile.txt 文件中包含两个表: flat profile, call graph. flat profile 显示的是每个函数的总共执行时间和调用次数等信息. call graph显示的时函数调用关系和时间, 在做优化时非常有用.

valgrind 工具集

memcheck: 检测内存泄露, 编译时加 -g 参数并且不要开启 -O 优化. valgrind 默认工具就是 memcheck.

valgrind --leak-check=yes  myprog arg1 arg2


出错信息查询: http://valgrind.org/docs/manual/mc-manual.html#mc-manual.errormsgs

cachegrind: 分析程序 cache 命中和分支预测情况, 使用这个工具时最好打开 -O 优化.

valgrind --tool=cachegrind --branch-sim=yes prog


详细信息会输出到
cachegrind.out.<pid>
文件中, 可由
--cachegrind-out-file
选项改变输出文件. 然后用

cg_annotate --auto=yes <filename>


分析输出文件. 也可以使用图形化工具 KCachegrind.

callgrind

--tool=callgrind
使用 -g -O2 参数

massif

profile heap memory, 用 massif-visualizer查看图形化结果.

perf

Linux 自带的性能分析工具。

perf list
列出采样事件

perf stat [<options>] [<command>]


perf stat [<options>] [-p pid] | [-t tid]
以非常精简的方式列出程序运行的整体数据,包括 page faluts, branch misses,cpu利用率,进程切换次数等。可以针对已运行的进程和线程。

perf top
监控系统所有进程

perf record – e cpu-clock – g [<command>]
统计程序各个部分的运行事件

perf report
生成
perf record
命令的结果报表

gcov
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  profiler