现在越来越多的cpu支持超线程核心数也越来越多,还有部分AMDcpu有ccd、ccx模块,这就带来了两个问题同物理核心上的线程阻塞与核心间的通讯耗时增加。特别是当游戏没有专门对超线程优化并对实时性有很高要求时它们带来的副作用会体现的更加明显。
以上问题的研究皆建立在硬件稳定的基础上。特别要指出在文章发出时zen3即使内存烤机不报whea19也可能会因fclk频率引起部分高内存负载型游戏的间歇卡顿帧间隔暴增例如pubg、无主之地3、四海兄弟1最终版、生化危机3重置版等等,如出现这个问题降低fclk频率或fclk随降低内存频率自动降低后间歇卡顿就会消失。
问题起因:
1、同物理核心上的线程阻塞;系统内核和驱动默认占用cpu0线程,当游戏和驱动抢占运算资源时引发。
2、核心间的通讯耗时增加;当游戏不需要那么多cpu线程时,游戏可能会因cppc等调度造成游戏线程分配在间隔较远的内核上时引发。
解决思路:
每次运行程序后使用任务管理器手工分配cpu相关性(亲和性)或靠Process Lasso等软件管理程序的cpu相关性(亲和性),将游戏进程相关性排除cpu0如图1,对不需要超线程的游戏限制为不使用超线程不使用cpu0如图2,对不需要使用太多线程的游戏例如剑灵1单账号限制使用相邻的物理核心如图3。对AMDzen3来说9系列开始要考虑ccd间延迟尽量将游戏和驱动使用同一ccd上的线程然后将其他程序放在另一个ccd上,对AMDzen2来说则更复杂,有时优先使用ccx效果好、有时不使用超线程效果好、有时默认不管效果好,视具体游戏而定。

图1多线程优化好的游戏进程相关性排除cpu0线程

图2对不需要超线程的游戏限制为不使用超线程不使用cpu0

图3针对只需要4线程的剑灵1.0单账号多账号需要复制客户端并修改不同的进程名
设置前后对比:
此处以400帧ow为例,观测1%最低帧0.1%最低帧

不设置相关性的

设置排除cpu0相关性的
还有个排除cpu0排除超线程的翻车了帧数最低就不放图了-_-!!