游戏卡顿白皮书 › L2 客户端操作系统与设备
后台进程占用 CPU Background CPU contention
原因 ID co-background · 主责 外部·外部 · 配合 研发团队·客户端开发
在含图示和实验的完整版中打开此卡片 →
杀毒扫描、Windows 更新、直播软件、浏览器视频占着 CPU 核心时,游戏线程分不到 CPU,只能等待。
起因 其他程序长时间占用 CPU 核心 → 结果 游戏线程等待调度 → 画面表现 帧变慢,收到的数据包也处理得晚
- 症状
- 一卡一卡, 快进
- 因素
- 停顿
- 谁会遇到
- 只有我
- 何时出现
- 偶尔随机, 固定周期
- 负责方
- 主责 外部·外部 · 配合 研发团队·客户端开发
- 研发团队要做的事
- 调整游戏线程优先级,在出现卡顿时的日志中一并记录整机 CPU 使用率,以区分是不是其他程序导致的。
- 外部要做的事
- 引导玩家开启 Windows 游戏模式,游戏时关闭不必要的程序(杀毒扫描、Windows 更新、直播软件、浏览器视频)。
- 数值参考
- Windows 通常每次把核心交给一个线程几 ms 到几十 ms。只要在调度中被挤掉一次,就会少一帧。
- 监控图上
- 偶发随机尖峰 · 整机 CPU 使用率、帧耗时
- 查看位置
- 把任务管理器“进程”选项卡的 CPU 列、性能监视器的 Processor Information(_Total)\% Processor Time 与 PresentMon 帧耗时一起记录。怀疑杀毒软件时,用 New-MpPerformanceRecording 录制,再用 Get-MpPerformanceReport 查看扫描耗时长的文件和进程
- 确认依据
- 卡顿的时刻其他程序(杀毒扫描、更新、直播软件)的 CPU 占用飙升,或游戏目录下的文件排在扫描耗时前列。关掉该程序或加入排除项后消失
- 排除依据
- CPU 使用率不高,整个画面却顿一下、声音滋滋作响,看“网卡省电/驱动问题”(DPC 延迟)
- 确认手段
- 需在玩家侧环境确认
- 深入了解
- Windows 会给前台窗口的程序稍高一点的优先级,但要做的事比核心多时,游戏也得等。比起占用 CPU,杀毒软件更常以“实时监控”的方式介入。游戏每次打开文件都会被扫描,读取资源那一刻的停顿就会变长。
出处
- Multitasking Microsoft
Windows 给每个线程分配时间片,用完就切换到下一个线程;时间片约 20 ms(因操作系统和 CPU 而异) - Priority Boosts Microsoft
前台窗口的进程,优先级会被提到不低于后台进程 - About regular quick and full scans with Microsoft Defender Antivirus Microsoft
实时保护在每次打开、关闭文件以及打开文件夹时都会扫描 - Network-Related Performance Counters Microsoft
Processor Information:% Processor Time 计数器 - Performance analyzer for Microsoft Defender Antivirus Microsoft
用 New-MpPerformanceRecording 录制,用 Get-MpPerformanceReport 查看对扫描时间影响最大的文件、路径、进程 - PresentMon Capture Application (README-CaptureApplication.md) Intel
用 FrameTime(帧与帧之间的 CPU 时间)录制每帧耗时
相关原因
同一层:L2 客户端操作系统与设备
其他层中同样导致“一卡一卡”的原因
查看含图示和实验的原卡片