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

游戏卡顿白皮书 › L2 客户端操作系统与设备

省电模式/发热降频 Power saving, thermal throttling

原因 ID co-power · 主责 外部·外部 · 配合 研发团队·客户端开发

在含图示和实验的完整版中打开此卡片 →

笔记本电池模式、手机省电模式、设备发热都会让 CPU、GPU 降速。发热的特点是一开始正常,过一阵子才变慢。

起因 处于电池模式或省电模式,或者设备发烫 → 结果 视设备不同,CPU、GPU 频率降低 30~50% → 画面表现 出现 FPS 下降、一卡一卡:省电模式下一开游戏就出现,发热则在玩几分钟到 20 分钟左右后出现

症状
一卡一卡, 操作延迟
因素
停顿
谁会遇到
只有我
何时出现
开得越久越严重, 一直
负责方
主责 外部·外部 · 配合 研发团队·客户端开发
研发团队要做的事
自动调节画质选项,用帧率上限控制发热,根据系统给出的发热等级(iOS 的 thermalState、Android 的热状态 API)提前降低选项,在可执行文件中标明双显卡笔记本要使用独立显卡(导出 NvOptimusEnablement、AmdPowerXpressRequestHighPerformance)。
外部要做的事
引导玩家关闭省电模式,笔记本建议插电使用;遇到“笔记本配置不错但 FPS 低”的反馈,确认游戏跑在哪块显卡上,并引导玩家在 Windows 图形设置中把游戏指定为高性能 GPU。
监控图上
缓慢爬升 · FPS、CPU/GPU 频率
查看位置
用 PresentMon 把 CPUFrequency、GPUFrequency、CPUTemperature、GPUTemperature 与帧耗时一起记录 20~30 分钟,并用任务管理器“进程”选项卡的“GPU 引擎”列确认游戏跑在哪块显卡上。移动端把 Android 热状态 API(getThermalHeadroom、热状态)和 iOS thermalState 与 FPS 一起记录
确认依据
温度升高、频率下降的时刻起 FPS 开始下降,或只在电池/省电模式下频率偏低。也可能是游戏跑在集成显卡上
排除依据
频率、温度不变,FPS 却下降,看“后台进程占用 CPU”或“客户端内存泄漏”
确认手段
需在玩家侧环境确认
深入了解
双显卡笔记本为了省电,有时会让游戏跑在较慢的集成显卡上。遇到“笔记本配置不错但 FPS 低”的反馈,先确认游戏跑在哪块显卡上。

出处

  1. Thermal API Android (Google)
    设备只能在有限时间内维持高性能,之后会因发热而降频;建议根据热状态提前降低负载
  2. thermalState Apple
    iOS 给出的当前发热等级;等级升高时应用应减少资源使用
  3. Selecting the Best Graphics Device to Run a 3D Intensive Application AMD
    双显卡笔记本跑在集成显卡上时,60 FPS 的游戏可能降到 30 FPS;导出 AmdPowerXpressRequestHighPerformance 可选择独立显卡
  4. PresentMon Capture Application (README-CaptureApplication.md) Intel
    按帧记录 CPUFrequency、GPUFrequency(频率)和 CPUTemperature、GPUTemperature(温度)
  5. GPUs in the task manager Microsoft
    任务管理器有一列显示各进程的 GPU 使用率,还有一列显示该数值属于哪块 GPU、哪个引擎

相关原因

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

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

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