自己电脑镇楼。
配置是2700oc4g,x470pro,3200c16,vega超白金。MX27AQ,2k60的屏。
这配置用了三个月了,只遇到一个游戏卡顿非常厉害,那就是csgo。卡顿大概每10秒就会出现一次,已经很影响游戏体验了。然后我就一直在分析卡顿的原因是什么。
同样是fps游戏,vulkan的DOOM,帧数150左右,一点不卡,我甚至从未遇到过卡顿。OW,不锁帧的话帧数大概110-300,也不卡顿。
反而是csgo,不锁帧的时候帧数可以上700,但此时依然会卡。默认锁300的话,实际游戏会经常掉到200-300这样,也会卡。
我试过以下方法,都没用。包括让GPU恒定在P6和P7之间的高频率,D3D9EX,调试驱动里的选项,降画质。
不过我现在已经基本解决了,解决方法就是把帧数限制在刷新率的整数倍,且所有硬件都不瓶颈,即可以稳定在这个帧数。我这里锁的是180fps。卡顿大幅度改善。
锁帧是有副作用的,即操作延迟上升,不过在高帧率下,帧率变化对操作延迟影响不是很大,肯定是利大于弊的。
类似的还有半条命2,这游戏不锁帧也能跑到六七百帧,也是会略微卡,不过比csgo好很多。锁180帧之后一点都不卡。
目前我猜想原因可能有两个。
第一个是不容易验证的,即发生卡顿的游戏是flip queue等于1。这个队列越小,cpu预缓存帧数越少,因为cpu和内存掉帧的可能性越高。但我凭感觉,那个卡顿的时间挺长的,虽然不到1秒,但我觉得超过3帧了。cpu和内存如果突然白给,连续3帧都没输出,按理说其他fps游戏也会卡。
因为游戏的flip queue不容易查到,所以这个很难验证。
第二个我觉得可能性很大,就是决定帧数的因素是内存或内存控制器瓶颈,那么就会卡顿。
csgo和半条命2,即使不锁帧,即能跑到600fps以上,显卡也不会满载,cpu也没满载。而DOOM,OW都是GPU满载。
还有就是我同学的2600x和580的配置,玩csog最高画质,180-300帧浮动,但他是GPU满载,他那一点都不卡。不过我给他买的是144freesync显示器。A驱动对freesync环境下CPU预渲染有没有变动,我也不清楚。
锁帧能解决问题的原因应该是避免了内存或内存控制器瓶颈。我朋友分析原因,可能是内存或内存控制器满载之后,会卡IO,导致瞬时帧生成时间过长。
我昨天看到有人说A平台用3200c16内存过不了memtest,我一想我都用半年了(平台比显卡早买的),也没不稳定啊,测试我也跑过,没出错。当时无聊,想再跑一次测试截图打他脸。跑的时候内存是满载的,我很明显的看到RGB灯效都变卡了。。。
所以内存或内存控制器满载应该会严重影响性能。
如果用A平台的吧友遇到帧率极高但卡顿的情况,不妨测试一下。测试时候直接锁60或120就行。如果不卡顿了说明这方法可行。