한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

游戏卡顿白皮书 › 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,杀毒软件更常以“实时监控”的方式介入。游戏每次打开文件都会被扫描,读取资源那一刻的停顿就会变长。

出处

  1. Multitasking Microsoft
    Windows 给每个线程分配时间片,用完就切换到下一个线程;时间片约 20 ms(因操作系统和 CPU 而异)
  2. Priority Boosts Microsoft
    前台窗口的进程,优先级会被提到不低于后台进程
  3. About regular quick and full scans with Microsoft Defender Antivirus Microsoft
    实时保护在每次打开、关闭文件以及打开文件夹时都会扫描
  4. Network-Related Performance Counters Microsoft
    Processor Information:% Processor Time 计数器
  5. Performance analyzer for Microsoft Defender Antivirus Microsoft
    用 New-MpPerformanceRecording 录制,用 Get-MpPerformanceReport 查看对扫描时间影响最大的文件、路径、进程
  6. PresentMon Capture Application (README-CaptureApplication.md) Intel
    用 FrameTime(帧与帧之间的 CPU 时间)录制每帧耗时

相关原因

同一层:L2 客户端操作系统与设备

其他层中同样导致“一卡一卡”的原因

查看含图示和实验的原卡片