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

遊戲 Lag 白皮書 › L2 用戶端 OS 與裝置

省電模式、過熱降頻 Power saving, thermal throttling

原因 ID co-power · 主要負責 外部(外部) · 協同 遊戲開發團隊(用戶端開發)

在含圖解與實驗的完整版中開啟卡片 →

筆電的電池模式、手機的省電模式、裝置過熱,都會讓 CPU、GPU 速度下降。過熱的特徵是一開始正常,過了一段時間才變慢。

為什麼 處於電池或省電模式,或裝置發燙 → 於是 依裝置不同,CPU、GPU 時脈降低 30~50% → 畫面上 省電模式一開就發生,過熱則在玩了幾分鐘~20 分鐘左右後,FPS 下降並出現卡頓

症狀
卡頓, 輸入延遲
因素
停滯
誰會遇到
只有我
何時
開越久越嚴重, 一直都有
負責單位
主要負責 外部(外部) · 協同 遊戲開發團隊(用戶端開發)
遊戲開發團隊要做的事
自動調整畫質選項、以畫格上限控制發熱、依 OS 回報的熱狀態等級(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 回報的目前熱狀態等級,等級升高時 App 應減少資源使用
  3. Selecting the Best Graphics Device to Run a 3D Intensive Application AMD
    在有兩顆顯示晶片的筆電上以內建顯示晶片執行時,60FPS 的遊戲可能掉到 30FPS;匯出 AmdPowerXpressRequestHighPerformance 可選用獨立顯示卡
  4. PresentMon Capture Application (README-CaptureApplication.md) Intel
    逐畫格記錄 CPUFrequency、GPUFrequency(時脈)與 CPUTemperature、GPUTemperature(溫度)
  5. GPUs in the task manager Microsoft
    工作管理員有欄位顯示各處理程序的 GPU 使用率,以及該數值屬於哪個 GPU 與引擎

相關原因

同一層:L2 用戶端 OS 與裝置

同一症狀(卡頓)在其他層的原因

查看含圖解與實驗的完整版卡片