为了确定您的游戏进程线程是否得到适当的利用和调度,以实现最佳性能,需要考虑一些事项。
- Frame pacing
- 多线程和线程并行化
- CPU 核心亲和性
多线程处理
许多游戏和游戏引擎使用多线程处理将 CPU 工作划分为可在一定程度上独立运行的逻辑任务。一种典型的配置是用于处理输入和游戏逻辑的游戏线程、用于准备和提交要绘制的对象的渲染线程,以及用于动画或音频等其他子任务的工作器线程。
我们建议并行处理线程,以利用多线程的性能提升效果。例如,游戏和渲染线程在不同核心上部分或完全并发运行。这并非总是可行,例如在具有共享数据依赖项的情况下;但是,如果可能,这可能会导致 CPU 时间缩短,进而可能实现更高的帧速率。
CPU 核心亲和性
对 CPU 工作负载性能有重大影响的一个因素是它们在核心上的调度方式。它可分为两部分:
- 游戏线程是否运行在最佳核心上以提升性能
- 游戏线程是否频繁切换核心
您可以在“CPU 使用率”下调查 CPU 线程行为,只需在获取轨迹时启用配置文件配置中的 CPU 即可。通过将轨迹的某一部分放大到 200 毫秒以内,您可以查看在设备的 CPU 核心上运行的各个进程。通常,小核心对应较小的索引(例如 CPU 0
-3
),而大核心对应较高的索引(例如 CPU 6
-7
)。
通常,当游戏位于前台时,持久性线程(如游戏线程和渲染线程)应在高性能大核心上运行,而其他进程和工作线程可能安排在较小的核心上。
如果主线程和渲染线程在单个 CPU 帧内或在两个连续的 CPU 帧之间更改核心,那么您还可以观察游戏线程是否频繁切换核心。此 CPU 行为可能表示您的游戏线程未正确关联。此类核心切换会因上下文切换以及核心的缓存/寄存器的状态丢失而产生一些开销,从而导致 CPU 帧的长度增加。