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

ゲームラグ白書 › 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を使うことよりも「リアルタイム監視」で割り込むことのほうが多いです。ゲームがファイルを開くたびにスキャンするため、アセットを読み込む瞬間の停止が長くなります。

出典

  1. Multitasking Microsoft
    Windowsはスレッドごとにタイムスライスを与え、使い切ると次のスレッドに切り替える。タイムスライスは約20ms(OS・CPUによって異なる)
  2. Priority Boosts Microsoft
    前面に表示しているウィンドウ(フォアグラウンド)のプロセスは、優先度をバックグラウンドプロセス以上に引き上げる
  3. About regular quick and full scans with Microsoft Defender Antivirus Microsoft
    リアルタイム保護は、ファイルを開くときと閉じるとき、フォルダーを開くときに毎回スキャンする
  4. Network-Related Performance Counters Microsoft
    Processor Information:% Processor Timeカウンター
  5. Performance analyzer for Microsoft Defender Antivirus Microsoft
    New-MpPerformanceRecordingで記録し、Get-MpPerformanceReportでスキャン時間に影響した上位のファイル・パス・プロセスを確認
  6. PresentMon Capture Application (README-CaptureApplication.md) Intel
    FrameTime(フレーム間のCPU時間)でフレームごとの時間を記録

あわせて読みたい原因

同じ層:L2 クライアントのOS・端末

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

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