ゲームラグ白書 › L2 クライアントのOS・端末
クライアントのメモリ不足・スワップ Paging / swap on client
原因ID co-swap · 主担当 外部・外部 · 副担当 ゲーム開発チーム・クライアント開発
図と実験のあるメインページでこのカードを開く →
ブラウザのタブを数十個開いたままゲームを動かすと、OSがゲームのメモリの一部をディスクに追い出します。
なぜ 全体のRAMが足りなくなる → すると OSが今すぐには使わないゲームのメモリをディスクに移す → 画面では その部分を再び使う瞬間に、ストレージによって数十〜数百ms止まる
- 症状
- フリーズ, カクつき
- 要因
- ストール
- 誰に起きるか
- 自分だけ
- いつ
- 移動中・マップ切り替え時, ときどきランダムに
- 担当
- 主担当 外部・外部 · 副担当 ゲーム開発チーム・クライアント開発
- ゲーム開発チームの対応
- メモリ使用量の削減、空きメモリが少なければ警告を表示。
- 外部の対応
- ユーザーに最低スペックを案内、プレイ中は他のプログラム(ブラウザのタブなど)を閉じるよう案内。
- グラフでは
- 不定期なスパイク · ハードページフォールト、メモリ使用量
- 確認箇所
- パフォーマンスモニターのMemory\Pages Input/sec(ハードページフォールトを解決するためにディスクから読み込んだページ数)と、タスクマネージャーのパフォーマンスタブのメモリ使用量・コミット済みを、フレームタイムとあわせて記録
- 該当する場合
- 止まった瞬間にPages Input/secが急上昇し、メモリがほぼいっぱい。ブラウザなど他のプログラムを閉じると消える
- 該当しない場合
- メモリに余裕があり、Pages Input/secが落ち着いているなら「メインスレッドでの同期ロード・シェーダーコンパイル」か「ストレージが遅くアセットストリーミングが間に合わない」
- 確認手段
- ユーザー側の環境で確認
出典
- Introduction to the page file Microsoft
ページファイルはディスク上のファイルで、あまり使われない変更済みのメモリページをRAMから追い出すために使う - Working Set Microsoft
RAMにないページにアクセスするとページフォールト。ハードフォールトは、ページファイルなどディスクから読み込まないと解決しない - Chapter 12 - Detecting Memory Bottlenecks Microsoft
Memory\Pages Input/sec:ページフォールトを解決するためにディスクから読み込んだページ数(ハードページフォールト)
あわせて読みたい原因
同じ層:L2 クライアントのOS・端末
同じ症状(フリーズ)を起こすほかの層の原因
図と実験のあるメインページでこのカードを見る