Linux上使用VTune进行性能抓取与结果分析
Linux上使用VTune进行性能抓取与结果分析
前言
很多时候需要分析程序的性能,找出性能瓶颈,工具有很多,vtune功能强大,能够比perf抓取到更多的数据,故采用vtune进行性能的抓取和分析
因为服务器程序一般运行在Linux机器上,所以我们需要在Linux机器上进行数据的抓取,但Linux机器不方便查看结果数据,所以我们拿到数据后打包到Windows机器上进行结果的分析与查看。
软件安装
这里只讲Linux的下载与安装,Windows界面化的安装就不赘述了。
安装包下载
1 | wget https://registrationcenter-download.intel.com/akdlm/IRC_NAS/4466ed1b-5d4a-4b30-9146-1eabc336c647/l_oneapi_vtune_p_2023.1.0.44286_offline.sh |
想要不同版本的安装包也可以到官网去找
安装
使用root进行安装,执行
1 | sh ./l_oneapi_vtune_p_2023.1.0.44286_offline.sh |
执行后会弹出一个界面

上下左右键可以控制选项,Enter进行确认
按照提示一路Accept就完成了,最后一步有个是否report可以选择不
安装完成后,可以在以下路径/opt/intel/oneapi/找到
如果使用非root用户安装,一般安装在~/intel/oneapi/
设置环境变量
执行指令
1 | source /opt/intel/oneapi/setvars.sh |
可以将该指令加到bash配置文件中,后续新开的命令行都可以直接使用,无需每次设置环境变量
1 | echo "source /opt/intel/oneapi/setvars.sh" >> ~/.bashrc |
软件使用
抓取数据
可以执行以下指令,进行抓取数据
需要注意的是:vtune要求待抓取数据的进程不能使用38号信号, 无论是38号信号被设置为SigCgt 或者 SigIgn都不行
1 | vtune -collect hotspot -duration {time sec} -run-pass-thru=--profiling-signal={signal} -target-pid={pid} -result-dir={dir} |
参数解释:
-duration 抓取持续时间
-run-pass-thru=–profiling-signal={signal} 用该指令来重新指定信号
-target-pid={pid} 抓取的进程pid
-result-dir={dir} 结果输出的目录 目录必须存在且未被vtune使用过
结束抓取
如果设置了 duration参数则到时间后会自动结束,也可以使用ctrl+c提前结束
如果未设置duration参数,则可以ctrl+c手动结束
结果分析
将结果文件夹打包发送到windows系统
用vtune打开结果,查看所需的数据