因英雄联盟卡而引发的关于游戏FPS问题的研究与探讨(二)

2018-10-1611:01:50 发表评论 613 浏览

在因英雄联盟卡而引发的关于游戏FPS问题的研究与探讨(一)里,已经和大家分享了fps到底是什么东西,以及如何观察网络游戏fps不稳定到底是网络方面问题引起,还是本机问题引起的一些方法!
注:网络方面问题引起特指(路由->光纤收发器->电信机房->互联网路由节点->英雄联盟服务器机房->影响联盟服务器)这一大串东西!
这篇文章主要是想和大家分享,如何通过一些方法,快速且准确的锁定到英雄联盟游fps不稳定或“卡”的故障范围!
核心逻辑依据:木桶原理,也就是说某个游戏出问题了,一定是某个游戏所需要的资源,或者性能有瓶颈出现,只是目前我们不知道瓶颈在哪里而已,所以我们需要逐步排除。考虑到操作成本问题,我们从最容易排除的环节入手。

我以熟悉的nVidia显卡并且假设网吧是有盘环境来模拟整个推论过程!

1、先看看是不是显卡性能不足导致的。
按照如下设置,改好你的系统设置,然后用GPU-Z记录显卡的GPU使用率,假如你全屏玩游戏,GPU使用率一局下来都没超过80%,则证明你的显卡性能是足够的,所以显卡不会是瓶颈,否则反之;

  • 安装nVidia显卡驱动时,不要安装节电模块“Feforce Experience”,目的是释放显卡性能;
  • nVidia控制面板->3D设置->管理3D设置->垂直同步,设置为开,目的是让显卡处于一个稳定状态或者说可被观察的状态,就让它工作在60fps的状态下,看看GPU使用率是否会跑满,如果60fps都会跑满,那显卡性能一定是不太满足这个游戏的;
  • 063257p82cp676ccnipl6g.png
  • nVidia控制面板->3D设置->配置PhysX设置,选择PhysX处理器,选择显卡型号。目的是不让CPU参与游戏的绘图、渲染工作,这些工作强制要求让GPU去做。
  • 063306e1ziriyoqtw7cm8o.png
  • 英雄联盟游戏设置->视频->帧率封顶:选择“不封顶”,并勾选下面的“等待垂直同步”。目的是把性能控制问题交给显卡,比起腾讯,我更相信那些显卡公司的驱动!
  • 063015qg01v4knps14is3h.png

 

  • 然后一切都设置好了,开启GPU-Z,并勾选记录日志。
  • 064306flmg36stwsmhwszp.png
  • 然后就开始玩游戏,在你玩游戏的过程中,日志会每隔1秒记录1次显卡的状态,等你玩完游戏就知道显卡是否存现过性能不足的情况,在日子中,以逗号分割,第5列记录的就是每一秒的GPU使用率,看他是否经常出现>80%的情况,如果是,则证明显卡性能偏低了,估计要买好一点的显卡。因为lol硬件要求其实并不是非常高,如果玩lol,在60fps下GPU使用率都能达到80%,那玩其他要求高一点的游戏,估计是必卡无疑了!

2、不是显卡,会不会是CPU高呢?
同样,你可以基于上面显卡的设置下,再检查主板BIOS中是否开启了节能,如果开着,则需要关闭,下面这篇文章里记录了一些主板BIOS节能的名称,可以做为参照。
新配的客户机容易随机出现自动重启、游戏卡问题?不妨优化下BIOS中节能技术!
http://www.clxp.net.cn/thread-1504-1-1.html
(出处: 死性不改BBS)

  • 接下来,你需要使用性能计数器,建立一个CPU使用时间收集器,来记录你在玩游戏期间CPU的使用率情况,假如你在玩游戏期间,CPU使用率持续100%,我觉得要么是CPU性能不足,要么是有其他东西占用CPU效能太多。
  • CPU使用时间或CPU使用率收集器设置方法如下图,照着做就行了!首先打开性能计数器。
  • 065441prl2z9ruuluzvlr9.png
  • 065505g2g7onpgqnqvv3kv.png
  • 065515rjlvlm7bz6fjfl8z.png
  • 下图说明一下,当你在上图的界面点下一步了,默认展现的计数器列表有个Processor(就是处理器的意思),然后你点击Processor右侧的向下箭头,就可以找到%User time了。
  • 065524fskkx60aohuhioi1.png
  • 065658nu8p22n7ccn773iy.png
  • 065706mr0o2oc898q92qqk.png
  • 065714j28xlslqjj5995qm.png
  • 收集器已经建好了,他已经在记录cpu使用率了,接下来就是全屏玩游戏,游戏玩完了,回来看看cpu使用率的记录。
  • 065725fkf3a5xzo3qkqkaf.png
  • 游戏玩完了,然后点击你新建的收集器,并停止记录。
  • 065814z7glz4sn0gtlrtsg.png
  • 然后在下图的界面,就可以看到你的cpu使用率曲线了,如果cpu一直持续在100%,说明cpu很忙,有可能会成为fps不稳定的因素之一。
  • 065848hvvptelplrmnhzvc.png

3、如果不是CPU呢?那会不会是硬盘?
我们假设环境是有盘,那么我们还是可以通过建立性能收集器的方式,来记录游戏过程中,磁盘的工作时间,整体的操作步骤和建立cpu使用率收集器的方式相同,就是在选择计数器时,需要按照下图来选,记录整个物理硬盘的工作时间。

  • 计数器选择PhysicalDisk,然后选择%disk time,就是磁盘工作时间。假如游戏过程中,磁盘工作时间经常处于100%,说明磁盘太忙,可能有程序在读写硬盘,也可能是硬盘有故障等等,导致的fps不稳定。
  • 070233zctxv2rp0olvpfuc.png

事实上,在有盘环境下 ,英雄联盟fps不稳定,大致就这么几大类了,而实际上本质都是“资源不够用”才fps不稳定的。
这里再总结一下基础原理:

  • 用户从硬盘上,启动了一个叫英雄联盟LOL的游戏程序,游戏程序需要显示出游戏界面,并且允许用户操作,于是其他硬件开始了一系列的协作;
  • CPU解析英雄联盟这个程序的指令,发现需要读取数据,于是他就命令硬盘控制器,去硬盘上找数据,找到数据之后交给内存;
  • 同时CPU又告诉显卡,游戏的画面数据都在内存里,显卡你拿去处理吧;
  • 于是显卡把绘图、渲染图像所需的资源放到自己的显存里,然后由GPU解析这些资源数据,并显示到显示器上;
  • 而LOL是个网络游戏啊,于是CPU又告诉网卡,有数据包需要你处理,于是网卡又将数据包从本机发送到英雄联盟服务器上,服务器收到数据又返回到网卡上;
  • 网卡又把数据交换给内存,然后CPU再根据英雄联盟的程序要求,再去协作其他硬件,进行交互,以上电脑前面的玩家玩的很爽……
  • 所以说,整个游戏的过程其实是非常复杂的,但受限于我们的认知,我们只能通过一些简单,高效的方法,去了解黑盒里的东西,通过检测输入和输出来判定哪个环节是不是出现了问题。

我这里只提供一个基础思路,这个思路理解了,加上你对无盘的理解,自然就可以判定是不是无盘哪里的问题,虚拟盘哪里的问题之类的……

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: