简介
使用gperftools统计相关
准备
安装
性能监控工具gperftools-2.9.1
,发布时间是2021-03-03。
1 | tar xvf gperftools-2.9.1.tar.gz |
64bit需要这个库的支持libunwind-1.5.0.tar.gz
,发布时间2020-11-11。
1 | tar xvf libunwind-1.5.0.tar.gz |
需要安装软件graphviz
、gv
。
CPU分析需要了解的知识
CPU占用分析工具工作时,将会通过探针程序产生一个.prof
二进制文件。这种文件格式说明信息可以查看这份文档
引入library库到应用中
可以在编译过程中直接使用-lprofiler
,将监控库连接到我们的executable程序中。还有一种方式通过修改环境变量LD_PRELOAD
引入到其中。LD_PRELOAD="/usr/lib/libprofiler.so" <binary>
。
running the code
有几种方式能真实开启CPU profiling
。
- 通过定义环境变量将某个exe文件执行过程的效果输出到prof文件中;
1 | env CPUPROFILE=ls.prof /bin/ls |
- 通过环境变量将开启或者关闭性能监控;
1 | env CPUPROFILE=chrome.prof CPUPROFILESIGNAL=12 /bin/chrome & |
- 在代码里面
ProfilerStart()
函数(通过参数能指定输出内容)开启记录,ProfilerStop()
函数结束。
可以通过阅读gperftools/profiler.h
获取高级函数,包括ProfilerFlush()
和ProfilerStartWithOptions()
。
修改运行时行为。
你能通过修改环境变量参数对CPU Profiler做精细的控制。
CPUPROFILE_FREQUENCY=x
默认值:100 CPU探测器每秒钟采样多少次中断。
CPUPROFILE_REALTIME=1
默认值:未设置 如果设置为任何值(包括0或空字符串),请使用ITIMER_REAL而不是ITIMER_PROF来收集配置文件。一般来说,ITIMER_REAL不如ITIMER_PROF准确,而且与alarm()的使用交互也不好,所以请选择ITIMER_PROF,除非您有理由选择ITIMER_REAL。
实例:
1 | ➜ build git:(develop_abel) ✗ LD_PRELOAD="/usr/local/lib/libprofiler.so" CPUPROFILESIGNAL=12 CPUPROFILE=recast.prof ./testbenchmark /root/develop/robot_develop/server/res/space/Level04/level.bin.to |
分析输出
1 | pprof --dot ./testbenchmark ./recast.prof.0 > recast.dot |
通过命令行生成dot文件。其实还能生成很多其他种类的文件类型。
参考
- [1] gperftools-源码
- [2] libunwind 1.5.0-源码
- [3] gperftools-手册