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

执行后会弹出一个界面

Linux安装界面

上下左右键可以控制选项,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打开结果,查看所需的数据