跳转至

CPU 调度与游戏线程

定位:CPU 调度与系统延迟主题主文。

本文负责机制总览、延迟分层、测试和恢复原则;具体注册表值、脚本行号和备份状态见全量执行参考CPU 优化与 tweakbyjie 对应说明

一、游戏线程与 CPU 调度

游戏性能不仅取决于 CPU 核心数量,还受到线程调度、优先级、等待时间、驱动中断和后台任务影响。常见线程包括:

  • 游戏主线程:处理输入、游戏逻辑、物理和状态更新;
  • 渲染线程:准备渲染命令并提交给图形 API;
  • 工作线程:处理资源加载、动画、音频、网络和其他并行任务;
  • 驱动/DPC 线程:处理硬件中断后的延迟任务,可能影响输入和帧时间。

平均 FPS 只能说明总体吞吐,不能单独说明交互体验。主线程卡顿、帧时间尖峰、DPC 阻塞或后台任务抢占,都可能在平均 FPS 不低时造成卡顿和输入延迟。

二、Windows 调度和前后台任务

Windows 会根据线程优先级、前台/后台状态、量子时间、处理器拓扑和系统策略分配 CPU 时间。前台程序通常获得更积极的交互响应策略,但这不等于“前台程序永远拥有全部 CPU”。

需要区分:

  • CPU 调度延迟;
  • 游戏线程等待 GPU/资源/锁的时间;
  • DPC/ISR 驱动响应延迟;
  • GPU 队列和显示合成延迟;
  • 网络 RTT 与服务器响应延迟。

改变某个注册表值不能同时解决这些不同层次的问题。

Win32PrioritySeparation

Win32PrioritySeparation 影响前台程序和后台任务的调度策略。它的完整路径、DWORD 类型、38 Dec = 0x26 目标值、位字段表、验证和恢复方式见 CPU 优化与 tweakbyjie 对应说明

当前 tweakbyjie 只实际写入 38/0x26,不支持图片资料中的后台服务值 24/0x18 或其他变体切换。该值不是简单性能开关,默认值和实际效果必须在目标机读取、记录和测试。

三、DPC/ISR 与实时响应

ISR(Interrupt Service Routine)用于快速响应硬件中断;DPC(Deferred Procedure Call)处理不能在 ISR 中长时间执行的后续任务。驱动产生大量或长时间运行的 DPC,可能造成:

  • 音频爆音或断续;
  • 键鼠输入延迟;
  • 游戏帧时间波动;
  • 网络或存储响应异常。

排查 DPC 问题时,优先检查驱动版本、设备电源管理、无线/蓝牙/音频/显卡驱动和硬件状态,不要先批量修改系统调度参数。

四、计时器、输入和显示链路

输入延迟通常经历:

设备采样 → HID/驱动 → Windows 消息 → 游戏主线程 → 渲染线程 → GPU 队列 → 显示刷新

系统计时器、应用采样周期、显示刷新率、帧时间和驱动调度都会影响最终响应。键鼠注册表实验不能替代游戏内输入延迟测试,TCP 参数也不能解决本地输入链路问题。

详见:

五、延迟来源和测试方法

常见来源包括:

  • CPU 调度和线程锁等待;
  • GPU 队列、帧生成和显示合成;
  • DPC/ISR 驱动延迟;
  • 内存访问、页面文件和资源加载;
  • 存储、网络和后台服务;
  • 温度墙、功耗墙、降频和不稳定超频。

优化前后应尽量保持游戏版本、分辨率、驱动、电源模式、网络服务器和后台程序一致,比较:

  • 平均 FPS;
  • 1% Low;
  • 帧时间波动;
  • 输入延迟;
  • RTT、抖动、丢包(网络实验);
  • 后台任务完成时间;
  • WHEA、蓝屏、睡眠/唤醒和长时间稳定性。

不要同时修改 CPU 调度、HAGS、MMCSS、Games 任务、电源计划和驱动,否则无法判断收益来源。

六、统一优化原则

任何系统调优都应遵循:

检测 → 记录原值 → 单项修改 → 配置验证 → 运行时 A/B → 恢复或保留

不要只追求更高优先级、更多核心或更低延迟数字。稳定的调度环境、合理的后台负载、正确的驱动和可恢复的配置通常比单一参数更重要。

七、与 tweakbyjie 的关系

tweakbyjie 负责实际执行部分 Windows 配置;youshouldknow 负责原理、适用范围、风险和恢复边界。执行前应先阅读:

执行脚本当前对部分 CPU/MMCSS 项目没有原值快照或完整回读,因此文档中“可解释”不等于脚本“可精确恢复”。

事实核查记录

核验基准:tweakbyjie 仓库 main 分支源码与本文关联映射文档(2026-08-29 重核:机制类内容稳定,无需实质变更;脚本声明已对照 tweak 源码 HEAD b905950 复核——Registry.ps1 仍仅写入 Win32PrioritySeparation=38/0x26 并经 Verify-RegDword 回读,无 24/0x18 写入路径)。

声明 核查结果
脚本只实际写入 Win32PrioritySeparation=38/0x26,经 Verify-RegDword 回读 ✅ 属实:与 Registry.ps1 及 CPU 优化对应说明一致
38=32+4+2(Short+Variable+High)的传统位字段解释 ✅ 属实:位字段解码表与社区通行资料一致(效果因版本/硬件而异已在正文声明)
24/0x18 仅为参考对照,不是脚本模式 ✅ 属实:源码无 24/0x18 写入路径
DPC/ISR、计时器与输入延迟链路的机制描述 ✅ 属实:与 Windows 调度/中断处理的通行技术资料一致
键鼠/TCP 实验不能替代游戏内测试 ✅ 属实:与验证流程文档口径一致