ゲームラグ白書 › 一部のユーザーだけに起きる問題
メモリ・VRAM不足によるストリーミングの失敗 Memory / VRAM exhaustion
原因ID pt-vram · 主担当 ゲーム開発チーム・クライアント開発 · 副担当 外部・外部
図と実験のあるメインページでこのカードを開く →
2つのクライアントがビデオメモリを分け合うと、新たに必要なモデル・テクスチャを載せる場所がなく、一部が描画されません。
なぜ 2つのクライアントがVRAM・RAMを分け合う。OSはバックグラウンドウィンドウのビデオメモリの割り当てを先に減らすこともある → すると エンジンが新しいモデル・テクスチャを載せられないか、下ろしては載せ直すことを繰り返す → 画面では NPCが遅れて現れる、ぼやける、表示されない、カクつき
- 症状
- 表示されない・ゴースト, カクつき
- 要因
- ストール
- 誰に起きるか
- 同じPCの片方のクライアントだけ
- いつ
- 移動中・マップ切り替え時, 人が集中したとき
- 担当
- 主担当 ゲーム開発チーム・クライアント開発 · 副担当 外部・外部
- ゲーム開発チームの対応
- メモリバジェットに合わせた品質の自動調整、ロード失敗時は代替モデルを表示。
- 外部の対応
- 2つのクライアントを同時に起動するユーザーに、グラフィック品質を下げるか低スペックモードを使うよう案内、推奨VRAM・RAMの仕様を案内。
- グラフでは
- 上限で頭打ち · プロセスごとの専用GPUメモリ使用量
- 確認箇所
- ユーザーのPCのタスクマネージャーの「詳細」タブに「専用GPUメモリ」列を追加し、2つのクライアントの使用量の合計をグラフィックスカードのVRAM容量と比較。ゲーム側では、DXGIのQueryVideoMemoryInfoが返すバジェット(Budget)と現在の使用量(CurrentUsage)を記録
- 該当する場合
- 2つのクライアントの使用量の合計がVRAM容量の付近で頭打ちになり、現在の使用量がバジェットを超えた時刻にモデル・テクスチャのロード失敗が集中。品質を下げるか1つだけ起動すると消える
- 該当しない場合
- VRAMに余裕があるのに表示されないなら、キャッシュ・アセットファイルへの同時アクセスの競合か、表示オプションの違い
- 確認手段
- ユーザー側の環境で確認
出典
- Residency (Direct3D 12) Microsoft
ビデオメモリのバジェットはほかのアプリに切り替えると大きく減ることがあり、バジェットを超えると停止するか生成に失敗。フォアグラウンドでなければ予約分も保証されない - GPUs in the task manager Microsoft
タスクマネージャーの詳細タブに列を追加すると、プロセスごとの専用・共有GPUメモリの使用量を確認できる。専用GPUメモリはグラフィックスカードのVRAM - DXGI_QUERY_VIDEO_MEMORY_INFO structure (dxgi1_4.h) Microsoft
Budget(OSが決めたビデオメモリのバジェット)とCurrentUsage(アプリの現在の使用量)。使用量がバジェットを超えるとカクつきが起きることがある
あわせて読みたい原因
同じ層:一部のユーザーだけに起きる問題
同じ症状(表示されない・ゴースト)を起こすほかの層の原因
図と実験のあるメインページでこのカードを見る