ゲームラグ白書 › 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のドライバーがよくある原因です。
出典
- Introduction to NDIS Selective Suspend Microsoft
Windowsは、アイドル状態のネットワークアダプターを低電力状態にできる(セレクティブサスペンド) - Guidelines for Writing DPC Routines Microsoft
DPCの実行中はそのコアのすべてのスレッドが止まるため、1回あたり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・端末
同じ症状(カクつき)を起こすほかの層の原因
図と実験のあるメインページでこのカードを見る