服务器cpu占用过高怎么办(游戏cpu占用率高解决办法)(1)

这个图看起来不是很恐怖呀,最近的一次游戏更新,造成了CPU的使用率大量飙升,有随时会崩掉的危险,还有这次更新改动的东西有点多,所以不太好排查问题,如果版本一个个的去回退,那将是一项很辛苦的工作,怎么办呢,问题又不能不处理,而且要快,不然老板又该生气了。

那就想办法呗,最好能快速的定位到哪块代码出问题了,精确到某一个函数,看看CPU占用的时间最长,

于是便网上找了找资料,他们说要用到一款工具 VTune

VTune 是什么呢,英特尔VTune™性能分析器,对他是一个性能分析器,

服务器cpu占用过高怎么办(游戏cpu占用率高解决办法)(2)

他能这样分析出每个进程的CPU占用时间,然后再能够进一步精确到哪个函数的具体调用时间,这样,你就可以知道你的代码哪个地方占用的CPU耗时最长了。

接下来,继续我们的操作,找了一圈资料下来,发现都是天下文章一大抄,自己还是一头雾水,那就直接跳到官方网站 按上面的提示自己操作吧。

服务器cpu占用过高怎么办(游戏cpu占用率高解决办法)(3)

虽然是全英文版本的,如果你不习惯 你可以网页翻译成中文来看

服务器cpu占用过高怎么办(游戏cpu占用率高解决办法)(4)

直接复制右侧的脚本 打开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

安装过程如下

服务器cpu占用过高怎么办(游戏cpu占用率高解决办法)(5)

这里显示己经下载完成了

我们再执行

sh ./l_BaseKit_p_2022.1.2.146_offline.sh

会进入到安装页面

服务器cpu占用过高怎么办(游戏cpu占用率高解决办法)(6)

我们只需要 用 Tab 键切换选择 Accept& install 就可以进入安装了

最后会出现安装成功的页面

服务器cpu占用过高怎么办(游戏cpu占用率高解决办法)(7)

点击关闭就可以了

最后还要设置一下环境变量

我的是安装路径是:/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 报上面的错误

服务器cpu占用过高怎么办(游戏cpu占用率高解决办法)(8)

查了一下 是缺少依赖引用的

yum install at-spi2-atk

yum install gtk3

把这两个依赖装上去

你以为这样又可以了嘛 还是不行嘛

[18610:0303/142946.181426:ERROR:browser_main_loop.cc(1409)] Unable to open X display.

报这个错误,这个我又折腾了半个小时,发现不行 只是不能用图开界面,那我换个方式嘛,用黑框框界面也可以接受

服务器cpu占用过高怎么办(游戏cpu占用率高解决办法)(9)

./vtune -collect hotspots -run-pass-thru=--no-altstack -target-install-dir=HOST/VTUNE/INSTALL/PATH -target-pid 14352

这是我组合起来的格式命令 网上找了一圈 没有一个能执行的 你只需要把进程 pid 换一下 就是上面的 14352 换成你想 collet的程序进程就好了

如果你感觉采集时间够了 按CTRL+C 结束就好了 ,他会帮你生成报告信息

服务器cpu占用过高怎么办(游戏cpu占用率高解决办法)(10)

Function 是 函数名 Module 是模块 CPU Time是占用的时间,基本上到这里,就能解决我们所需要的问题了,可以再深入研究一下。