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

ゲームラグ白書 › L2 クライアントのOS・端末

NICの省電力・ドライバーの問題 NIC power saving, driver bugs

原因ID co-driver · 主担当 外部・外部 · 副担当 ゲーム開発チーム・クライアント開発

図と実験のあるメインページでこのカードを開く →

有線LANアダプター・Wi-Fiチップがパケットの合間に省電力状態に入ると、再び動き出すまでに時間がかかります。

なぜ ネットワークデバイスの省電力機能が有効か、ドライバーが古い → すると 省電力状態からの復帰(wake-up)の遅延、ときどきデバイスの再起動 → 画面では 不規則な遅延、まれに数秒止まる

症状
カクつき, フリーズ
要因
ジッター, パケットロス
誰に起きるか
自分だけ
いつ
しばらく放置した後, ときどきランダムに
担当
主担当 外部・外部 · 副担当 ゲーム開発チーム・クライアント開発
ゲーム開発チームの対応
Androidクライアントは、プレイ中に低遅延Wi-Fiモード(WIFI_MODE_FULL_LOW_LATENCY)を要求してWi-Fiの省電力をオフにする。
外部の対応
ユーザーに、ネットワークドライバーの更新、デバイスマネージャーでネットワークデバイスの省電力を解除することを案内。画面全体が一瞬止まり音にノイズが入るなら、LatencyMonで原因のドライバーを見つけるよう案内。
グラフでは
不定期なスパイク · DPC・ISRの時間、ルーターまでのRTT
確認箇所
Windows Performance Recorder(WPR)で記録し、Windows Performance Analyzer(WPA)のDPC/ISRグラフで長く実行されているドライバー(Module列)を探す。デバイスマネージャーで、ネットワークアダプターの電源の管理(省電力)設定を確認
該当する場合
一瞬止まった時刻にネットワークドライバーのDPC・ISRが数msずつ続くか、省電力をオフにすると不規則な遅延が消える
該当しない場合
DPCが短く、省電力をオフにしても同じなら「Wi-Fiの干渉・電波の弱さ」か「Wi-Fiのバックグラウンドスキャン」
確認手段
ユーザー側の環境で確認
もっと詳しく
ドライバーが割り込みの処理でCPUを長く占有すると(WindowsではDPC遅延と呼びます)、その間ゲームスレッドもコアを使えません。このときはCPU使用率が低いのに画面全体が一瞬止まり、音にもノイズが入ります。LatencyMonのようなツールでどのドライバーかを特定でき、Wi-Fi・有線LANのドライバーがよくある原因です。

出典

  1. Introduction to NDIS Selective Suspend Microsoft
    Windowsは、アイドル状態のネットワークアダプターを低電力状態にできる(セレクティブサスペンド)
  2. Guidelines for Writing DPC Routines Microsoft
    DPCの実行中はそのコアのすべてのスレッドが止まるため、1回あたり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・端末

同じ症状(カクつき)を起こすほかの層の原因

図と実験のあるメインページでこのカードを見る