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

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

ビデオメモリ(VRAM)不足 VRAM over-commit

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

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

グラフィックオプションが必要とするメモリがグラフィックボードのメモリより大きいと、OSがテクスチャをPCのメモリへ追い出してはまた戻すため、カクつきます。

なぜ 高いテクスチャ設定や、人が多い場所のさまざまな装備・エフェクトで、グラフィックボードのメモリがいっぱいになる → すると OSが今すぐには使わないテクスチャをPCのメモリに移し、必要になると遅いPCIeバスで再び戻す → 画面では 新しい場面や新しいキャラクターが見えるたびに一瞬止まり、テクスチャがしばらくぼやける

症状
カクつき, フリーズ
要因
ストール
誰に起きるか
自分だけ
いつ
人が集中したとき, 移動中・マップ切り替え時
担当
主担当 ゲーム開発チーム・クライアント開発 · 副担当 外部・外部
ゲーム開発チームの対応
グラフィックボードのメモリ容量に合わせたオプションのデフォルト値、メモリ予算を超えたらテクスチャ品質を自動で下げる、人が多い場所ではキャラクターのテクスチャを簡略化。
外部の対応
ユーザーにテクスチャ設定を下げるよう案内。クライアントを2つ起動する場合は、さらに設定を下げるよう案内。
数値の目安
グラフィックボードのメモリは1秒に数百GBを読み込めますが、PCのメモリとやり取りするPCIeバスは世代によって1秒に16〜64GB前後で、10倍以上遅くなります。
グラフでは
上限で頭打ち · 専用GPUメモリ、共有GPUメモリ
確認箇所
タスクマネージャーのパフォーマンスタブにあるGPU項目の、専用GPUメモリ・共有GPUメモリのグラフ(詳細タブにプロセスごとの列も追加可能)を、PresentMonのフレームタイムとあわせて確認
該当する場合
専用GPUメモリが上限に張り付いて頭打ちになり、共有GPUメモリが増えている間に一瞬止まることが多い。テクスチャ設定を下げると消える
該当しない場合
専用メモリに余裕があれば「ストレージが遅くアセットストリーミングが間に合わない」か「メインスレッドでの同期ロード・シェーダーコンパイル」
確認手段
ユーザー側の環境で確認
もっと詳しく
Windowsのタスクマネージャーで、GPU項目の「専用GPUメモリ」がいっぱいになり「共有GPUメモリ」が増えていれば、この状態です。同じPCでクライアントを2つ起動すると、さらに早くいっぱいになります(「メモリ・VRAM不足によるストリーミングの失敗」の項目)。

出典

  1. Residency Microsoft
    プロセスが使えるビデオメモリには予算があり、超えるとカーネルがディスクリートGPUのヒープの一部をPCのメモリに移す(最後の手段なので、予算の管理を推奨)
  2. GPUs in the task manager Microsoft
    タスクマネージャーの専用GPUメモリはグラフィックボードのVRAM、共有GPUメモリはGPUとCPUが共有して使うPCのメモリ
  3. CUDA C++ Best Practices Guide NVIDIA
    ビデオメモリの帯域幅(V100で898GB/s)はPCIe Gen3 x16(16GB/s)よりはるかに大きいため、PCのメモリとの転送を減らすよう推奨
  4. PresentMon Capture Application (README-CaptureApplication.md) Intel
    FrameTime(フレーム間のCPU時間)でフレームごとの時間を記録

あわせて読みたい原因

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

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

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