游戏卡顿白皮书 › 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 低”的反馈,先确认游戏跑在哪块显卡上。
出处
- Thermal API Android (Google)
设备只能在有限时间内维持高性能,之后会因发热而降频;建议根据热状态提前降低负载 - thermalState Apple
iOS 给出的当前发热等级;等级升高时应用应减少资源使用 - Selecting the Best Graphics Device to Run a 3D Intensive Application AMD
双显卡笔记本跑在集成显卡上时,60 FPS 的游戏可能降到 30 FPS;导出 AmdPowerXpressRequestHighPerformance 可选择独立显卡 - PresentMon Capture Application (README-CaptureApplication.md) Intel
按帧记录 CPUFrequency、GPUFrequency(频率)和 CPUTemperature、GPUTemperature(温度) - GPUs in the task manager Microsoft
任务管理器有一列显示各进程的 GPU 使用率,还有一列显示该数值属于哪块 GPU、哪个引擎
相关原因
同一层:L2 客户端操作系统与设备
其他层中同样导致“一卡一卡”的原因
查看含图示和实验的原卡片