ゲームラグ白書 › L2 クライアントのOS・端末
バックグラウンドプロセスによるCPU占有 Background CPU contention
原因ID co-background · 主担当 外部・外部 · 副担当 ゲーム開発チーム・クライアント開発
図と実験のあるメインページでこのカードを開く →
ウイルス対策ソフトのスキャン、Windows Update、配信ソフト、ブラウザの動画がコアを占有すると、ゲームスレッドがCPUを割り当ててもらえずに待たされます。
なぜ 他のプログラムがCPUコアを長時間占有 → すると ゲームスレッドがスケジューリング待ちになる → 画面では フレームが遅れ、受信したパケットの処理も遅れる
- 症状
- カクつき, 早送り
- 要因
- ストール
- 誰に起きるか
- 自分だけ
- いつ
- ときどきランダムに, 一定の周期で
- 担当
- 主担当 外部・外部 · 副担当 ゲーム開発チーム・クライアント開発
- ゲーム開発チームの対応
- ゲームスレッドの優先度の調整、カクつきが起きたときのログにPC全体のCPU使用率も記録して、他のプログラムが原因かどうかを区別。
- 外部の対応
- ユーザーに、Windowsのゲームモードを有効にすること、プレイ中は不要なプログラム(ウイルス対策ソフトのスキャン・Windows Update・配信ソフト・ブラウザの動画)を終了することを案内。
- 数値の目安
- Windowsは通常、1回に数ms〜数十msずつコアを割り当てます。スケジューリングで一度後回しにされるだけで、1フレームが消えます。
- グラフでは
- 不定期なスパイク · PC全体のCPU使用率、フレームタイム
- 確認箇所
- タスクマネージャーのプロセスタブのCPU列と、パフォーマンスモニターのProcessor Information(_Total)\% Processor Timeを、PresentMonのフレームタイムとあわせて記録。ウイルス対策ソフトが疑わしければ、New-MpPerformanceRecordingで記録し、Get-MpPerformanceReportでスキャン時間の長いファイル・プロセスを確認
- 該当する場合
- カクついた時刻に他のプログラム(ウイルス対策ソフトのスキャン・アップデート・配信ソフト)のCPU使用率が急上昇するか、ゲームフォルダーのファイルがスキャン時間の上位に入る。そのプログラムを終了するか除外に設定すると消える
- 該当しない場合
- CPU使用率が低いのに画面全体が一瞬止まり、音にノイズが入るなら「NICの省電力・ドライバーの問題」(DPC遅延)
- 確認手段
- ユーザー側の環境で確認
- もっと詳しく
- Windowsは前面に表示しているウィンドウ(フォアグラウンド)のプログラムに少し高い優先度を与えますが、コアの数より実行すべき処理が多ければ、ゲームも待たされます。ウイルス対策ソフトは、CPUを使うことよりも「リアルタイム監視」で割り込むことのほうが多いです。ゲームがファイルを開くたびにスキャンするため、アセットを読み込む瞬間の停止が長くなります。
出典
- Multitasking Microsoft
Windowsはスレッドごとにタイムスライスを与え、使い切ると次のスレッドに切り替える。タイムスライスは約20ms(OS・CPUによって異なる) - Priority Boosts Microsoft
前面に表示しているウィンドウ(フォアグラウンド)のプロセスは、優先度をバックグラウンドプロセス以上に引き上げる - About regular quick and full scans with Microsoft Defender Antivirus Microsoft
リアルタイム保護は、ファイルを開くときと閉じるとき、フォルダーを開くときに毎回スキャンする - Network-Related Performance Counters Microsoft
Processor Information:% Processor Timeカウンター - Performance analyzer for Microsoft Defender Antivirus Microsoft
New-MpPerformanceRecordingで記録し、Get-MpPerformanceReportでスキャン時間に影響した上位のファイル・パス・プロセスを確認 - PresentMon Capture Application (README-CaptureApplication.md) Intel
FrameTime(フレーム間のCPU時間)でフレームごとの時間を記録
あわせて読みたい原因
同じ層:L2 クライアントのOS・端末
同じ症状(カクつき)を起こすほかの層の原因
図と実験のあるメインページでこのカードを見る