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

遊戲 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 與有線網路驅動程式是常見的原因。

出處

  1. Introduction to NDIS Selective Suspend Microsoft
    Windows 可以讓閒置的網路介面卡進入低耗電狀態(選擇性暫停)
  2. Guidelines for Writing DPC Routines Microsoft
    DPC 執行期間,該核心上的所有執行緒都會停住,因此建議每次不要超過 100µs
  3. Wi-Fi low-latency mode Android (Google)
    Android 低延遲 Wi-Fi 模式會由框架明確關閉 Wi-Fi 省電
  4. CPU Analysis Microsoft
    WPA 的 DPC/ISR 圖表:DPC、ISR 不間斷執行的各區段時間,以及該函式所在的模組(Module)

相關原因

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

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

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