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

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

クライアントのメモリ不足・スワップ Paging / swap on client

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

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

ブラウザのタブを数十個開いたままゲームを動かすと、OSがゲームのメモリの一部をディスクに追い出します。

なぜ 全体のRAMが足りなくなる → すると OSが今すぐには使わないゲームのメモリをディスクに移す → 画面では その部分を再び使う瞬間に、ストレージによって数十〜数百ms止まる

症状
フリーズ, カクつき
要因
ストール
誰に起きるか
自分だけ
いつ
移動中・マップ切り替え時, ときどきランダムに
担当
主担当 外部・外部 · 副担当 ゲーム開発チーム・クライアント開発
ゲーム開発チームの対応
メモリ使用量の削減、空きメモリが少なければ警告を表示。
外部の対応
ユーザーに最低スペックを案内、プレイ中は他のプログラム(ブラウザのタブなど)を閉じるよう案内。
グラフでは
不定期なスパイク · ハードページフォールト、メモリ使用量
確認箇所
パフォーマンスモニターのMemory\Pages Input/sec(ハードページフォールトを解決するためにディスクから読み込んだページ数)と、タスクマネージャーのパフォーマンスタブのメモリ使用量・コミット済みを、フレームタイムとあわせて記録
該当する場合
止まった瞬間にPages Input/secが急上昇し、メモリがほぼいっぱい。ブラウザなど他のプログラムを閉じると消える
該当しない場合
メモリに余裕があり、Pages Input/secが落ち着いているなら「メインスレッドでの同期ロード・シェーダーコンパイル」か「ストレージが遅くアセットストリーミングが間に合わない」
確認手段
ユーザー側の環境で確認

出典

  1. Introduction to the page file Microsoft
    ページファイルはディスク上のファイルで、あまり使われない変更済みのメモリページをRAMから追い出すために使う
  2. Working Set Microsoft
    RAMにないページにアクセスするとページフォールト。ハードフォールトは、ページファイルなどディスクから読み込まないと解決しない
  3. Chapter 12 - Detecting Memory Bottlenecks Microsoft
    Memory\Pages Input/sec:ページフォールトを解決するためにディスクから読み込んだページ数(ハードページフォールト)

あわせて読みたい原因

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

同じ症状(フリーズ)を起こすほかの層の原因

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