需要考虑以下几点,以确定您的游戏进程线程是否得到适当利用和调度,以实现最佳性能。
- 帧同步
- 多线程和线程并行化
- CPU 核心亲和性
多线程
许多游戏和游戏引擎使用多线程将 CPU 工作划分为逻辑任务,这些任务可以相对独立地运行。一种典型的配置是用于输入和游戏逻辑的游戏线程、用于准备和提交待绘制对象的渲染线程,以及用于动画或音频等其他子任务的工作线程。
我们建议并行化线程,以利用多线程带来的性能提升。一个例子是游戏线程和渲染线程在不同核心上部分或完全并发运行的场景。这并非总是可行,例如在存在共享数据依赖项的情况下;但是,如果可能,这可以缩短 CPU 时间,从而可能提高帧速率。

CPU 核心亲和性
一个显著影响 CPU 工作负载性能的因素是它们在核心上的调度方式。这可以分为两个部分
- 您的游戏线程是否运行在其工作负载最适合的核心上。
- 您的游戏线程是否频繁地在核心之间切换。
现代设备通常采用一种称为异构计算的架构,其中核心具有不同的性能水平
- 一个或几个核心提供顶级的峰值性能,但功耗更高。这些有时被称为“大核”。
- 其他核心的峰值性能较低,但能效更高。这些有时被称为“小核”。
- 可选:一个或多个核心在性能和功耗之间取得平衡。这些有时被称为“中核”。
您可以通过在跟踪时在配置文件中启用 CPU 来在 CPU 使用情况下调查 CPU 线程行为。通过放大到跟踪的 <200 毫秒部分,您可以查看设备 CPU 核心上运行的各个进程。通常,较小的核心对应于较小的索引(例如,CPU '0'-'3'),而较大的核心对应于较高的索引(例如,CPU '6'-'7'),如果存在中间核心,则会占用中间索引(例如,CPU '5'-'6')。这是常见约定,但不能保证。
如果您发现某些线程被调度到无法满足其性能或功耗需求的 CPU 上,请考虑手动设置这些线程的 CPU 亲和性。

您还可以观察您的线程是否在核心之间切换。这种核心切换会因上下文切换以及核心缓存/寄存器状态的丢失而产生一些开销。

为线程设置 CPU 亲和性会指示系统在您的游戏处于前台时将其调度到给定核心上。执行此操作时需要考虑以下几个因素
- 平台软件无法根据负载和热节流等运行时因素动态调整任务放置。
在不同设备上进行性能测试可能会产生非常不同的性能特征,特别是如果设备在价格点或发布日期上存在显著差异。
较新或更昂贵的设备可能在小核上轻松运行给定工作负载,但较旧或更经济实惠的设备可能需要更大的核心来满足相同工作负载的截止时间。
通过强制将亲和性设置为大核,您可能会不必要地增加电池消耗和热负载。
出于这些原因,通常最好避免手动设置 CPU 亲和性。