遊戲 Lag 白皮書 › L2 用戶端 OS 與裝置
網路卡省電、驅動程式問題 NIC power saving, driver bugs
原因 ID co-driver · 主要負責 外部(外部) · 協同 遊戲開發團隊(用戶端開發)
在含圖解與實驗的完整版中開啟卡片 →
有線網路卡或 Wi-Fi 晶片在封包與封包之間進入省電狀態時,要重新喚醒需要時間。
為什麼 網路裝置的省電功能開著,或驅動程式太舊 → 於是 喚醒(wake-up)延遲,偶爾裝置會重新啟動 → 畫面上 不規則的延遲,少數情況會停住數秒
- 症狀
- 卡頓, 定格
- 因素
- 抖動, 遺失
- 誰會遇到
- 只有我
- 何時
- 閒置一段時間後, 偶爾隨機發生
- 負責單位
- 主要負責 外部(外部) · 協同 遊戲開發團隊(用戶端開發)
- 遊戲開發團隊要做的事
- Android 用戶端在遊戲中要求低延遲 Wi-Fi 模式(WIFI_MODE_FULL_LOW_LATENCY),關閉 Wi-Fi 省電。
- 外部要做的事
- 引導玩家更新網路驅動程式、在裝置管理員中關閉網路裝置的省電;整個畫面頓一下且聲音出現雜音時,引導玩家用 LatencyMon 找出造成問題的驅動程式。
- 圖表上
- 偶爾隨機飆高 · DPC 與 ISR 時間、到分享器的 RTT
- 查看位置
- 用 Windows 效能記錄器(WPR)錄製,在 Windows 效能分析器(WPA)的 DPC/ISR 圖表中找出執行時間長的驅動程式(Module 欄),並在裝置管理員中確認網路介面卡的電源管理(省電)設定
- 符合的跡象
- 頓一下的時間點,網路驅動程式的 DPC、ISR 連續執行好幾 ms,或關閉省電後不規則的延遲消失
- 不符合的跡象
- DPC 很短、關閉省電後仍一樣時,是「Wi-Fi 干擾與訊號減弱」或「Wi-Fi 背景掃描」
- 確認方式
- 在玩家端環境確認
- 深入了解
- 驅動程式為了處理中斷(interrupt)而長時間占用 CPU 時(Windows 稱為 DPC 延遲),遊戲執行緒在這段期間也用不到該核心。這時 CPU 使用率很低,整個畫面卻會頓一下,聲音也會出現雜音。用 LatencyMon 這類工具可以找出是哪個驅動程式,Wi-Fi 與有線網路驅動程式是常見的原因。
出處
- Introduction to NDIS Selective Suspend Microsoft
Windows 可以讓閒置的網路介面卡進入低耗電狀態(選擇性暫停) - Guidelines for Writing DPC Routines Microsoft
DPC 執行期間,該核心上的所有執行緒都會停住,因此建議每次不要超過 100µs - Wi-Fi low-latency mode Android (Google)
Android 低延遲 Wi-Fi 模式會由框架明確關閉 Wi-Fi 省電 - CPU Analysis Microsoft
WPA 的 DPC/ISR 圖表:DPC、ISR 不間斷執行的各區段時間,以及該函式所在的模組(Module)
相關原因
同一層:L2 用戶端 OS 與裝置
同一症狀(卡頓)在其他層的原因
查看含圖解與實驗的完整版卡片