这个图看起来不是很恐怖呀,最近的一次游戏更新,造成了CPU的使用率大量飙升,有随时会崩掉的危险,还有这次更新改动的东西有点多,所以不太好排查问题,如果版本一个个的去回退,那将是一项很辛苦的工作,怎么办呢,问题又不能不处理,而且要快,不然老板又该生气了。
那就想办法呗,最好能快速的定位到哪块代码出问题了,精确到某一个函数,看看CPU占用的时间最长,
于是便网上找了找资料,他们说要用到一款工具 VTune
VTune 是什么呢,英特尔VTune™性能分析器,对他是一个性能分析器,
他能这样分析出每个进程的CPU占用时间,然后再能够进一步精确到哪个函数的具体调用时间,这样,你就可以知道你的代码哪个地方占用的CPU耗时最长了。
接下来,继续我们的操作,找了一圈资料下来,发现都是天下文章一大抄,自己还是一头雾水,那就直接跳到官方网站 按上面的提示自己操作吧。
虽然是全英文版本的,如果你不习惯 你可以网页翻译成中文来看
直接复制右侧的脚本 打开SHELL 窗口,直接运行就行了,
wget https://registrationcenter-download.intel.com/akdlm/irc_nas/18487/l_BaseKit_p_2022.1.2.146_offline.sh
sudo sh ./l_BaseKit_p_2022.1.2.146_offline.sh
安装过程如下
这里显示己经下载完成了
我们再执行
sh ./l_BaseKit_p_2022.1.2.146_offline.sh
会进入到安装页面
我们只需要 用 Tab 键切换选择 Accept& install 就可以进入安装了
最后会出现安装成功的页面
点击关闭就可以了
最后还要设置一下环境变量
我的是安装路径是:/opt/intel/oneapi/vtune/2022.0.0/bin64
打开 /etc/profile在末尾添加:export PATH=$PATH:/opt/intel/oneapi/vtune/2022.0.0/bin64
然后再刷新一下环境变量 source /etc/profile
使之立即生效
按常规来说,这样就可以启动了
./vtune-gui: error while loading shared libraries: libatk-bridge-2.0.so.0: cannot open shared object file: No such file or directory
执行 ./vtune-gui 报上面的错误
查了一下 是缺少依赖引用的
yum install at-spi2-atk
yum install gtk3
把这两个依赖装上去
你以为这样又可以了嘛 还是不行嘛
[18610:0303/142946.181426:ERROR:browser_main_loop.cc(1409)] Unable to open X display.
报这个错误,这个我又折腾了半个小时,发现不行 只是不能用图开界面,那我换个方式嘛,用黑框框界面也可以接受
./vtune -collect hotspots -run-pass-thru=--no-altstack -target-install-dir=HOST/VTUNE/INSTALL/PATH -target-pid 14352
这是我组合起来的格式命令 网上找了一圈 没有一个能执行的 你只需要把进程 pid 换一下 就是上面的 14352 换成你想 collet的程序进程就好了
如果你感觉采集时间够了 按CTRL+C 结束就好了 ,他会帮你生成报告信息
Function 是 函数名 Module 是模块 CPU Time是占用的时间,基本上到这里,就能解决我们所需要的问题了,可以再深入研究一下。