背景
vtune
,perf
, nsight system
等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下
perf
比较基础的用法:
先改这个环境变量,改成 1 1 1似乎就够用,这条命令据说是只影响当前窗口?
直接运行可执行程序,加上-g
为了显示符号信息
sudo sysctl -w kernel.perf_event_paranoid=1
sudo perf record -g ./../BenchBF3/bin_dpu/test_cpu
sudo perf report
report
进入之后,包含children
:当前函数所有成员cpu
占用率,以及self
:当前函数占用率
这里很可能你都看不到到底是在哪个函数花的时间。这时候需要你不断zoom out
,不停点进去就能看到。
googleperf
暂时还没用明白
目前的部署步骤还是记录一下:
网上的教程基本都是自己 g i t c l o n e git clone gitclone编译安装,我是直接 a p t i n s t a l l apt install aptinstall,不知道是不是有区别
sudo apt-get install -y google-perftools libgoogle-perftools-dev
进行编译:
如果是CMAKE
就加上target_link_libraries
加上profiler
即可
g++ -g -o perf_test perf_test.cpp -lprofiler
网上包括官网都是CPUPROFILE=xx.prof ./perf_test
这样跑就能生成对应.prof
文件,但是我不行,我只能在代码中添加,如下,然后直接运行,就会生成xxx.prof
#include <gperftools/profiler.h>
ProfilerStart("cpu.prof");
// 想要测试的代码片段
ProfilerStop();
接下来需要pprof
工具对.prof
文件进行解析。这玩意按照官网说法,直接go install xxx
那样就行,按照官方文档来。但我上不了github
,所以只能从gitee
搞一份到本地。
然后进入文件夹执行go build
,即在当前文件夹生成pprof
二进制文件。
具体指令见官网
pprof --text perf_test(二进制) cpu.prof
或者 pprof perf_test cpu.prof,进入一个命令行界面,png即可输出图片,但是看不懂这图片?