※ 仮想メモリ ※             目次

 06/05/03



*仮想メモリとは

 初心者向けに簡単な解説。Windows XPの動作に必要なメモリ容量は(一般的に)128MBであり、当然メモリの容量は多い方がPCの速度は速くなる。しかしメモリが足りないからと言って、複数のアプリケーションを起動した際に「メモリが足りません」というエラーを出していたのでは問題がある。そこで実装しているメモリの容量を超える数のアプリを起動してもメモリ不足のエラーが出ないようにする為の仕組みが仮想メモリである。
 ハードディスク上に仮想的にメモリと見なす領域を確保してやり、物理メモリが足りなくなったらその仮想メモリを使うという仕組み。HDの容量は物理メモリに比べて遥かに大きいので、そちらが溢れて足りなくなるというケースはまず無い。

 問題は物理メモリは電気的な記憶領域なのに対して、HDは物理的(メカニズムで動作する)な装置なのでアクセス速度が段違いに遅いという点。つまり大量のアプリを同時に起動してもメモリ不足でエラーにはならない代わりに、仮想メモリ上に存在するデータにアクセスする場合には(物理メモリだけを使用している場合に比較して)非常に遅くなるという欠点がある(スワップが発生するとも表現する)。

 ゲームにおいても仮想メモリに頻繁にアクセスする状態だとパフォーマンスが悪化する

*移動中に所々で一瞬止まったような感じになる
*マップのローディングが非常に長い
*ゲーム終了後にデスクトップへの復帰に時間が掛かる


 敵が沢山出た場合・複雑なエフェクトが掛かる箇所、といった場面で遅くなるのはCPUやビデオカードの力不足が考えられるが、移動しているだけで特に何も無いし何もしていないのにカクッと止まるような感じが頻繁に起きるケースでは、メモリ不足により仮想メモリへのアクセスが増えているという原因が考えられる。

 ビデオメモリ(VRAM)に入り切らなかったデータがメインメモリに移され、そこからも溢れたデータが仮想メモリに回されるので、これを防止するには使用メモリ容量を減らすという事になる。特に改善に影響する設定は以下の物。

※解像度を下げる
※Textureのクオリティを下げる
※Normal(Bump) Mappingの適用範囲、またはクオリティを下げる


*仮想メモリが足りないというエラーが発生する "Your system is low on (Out of) virtual memory"

 スタートからコントロールパネル>システムを起動。詳細設定タブ>パフォーマンス>詳細設定タブの中の仮想メモリの変更を選択すると現在の設定状況が出てくる。もし何もいじっていない場合には、デフォルト設定である「Cドライブにシステム管理サイズ」という状態になっているはず。システム管理サイズとは自動設定の意味で、必要な容量をOSが自動的に割り当ててくれるという設定。

 もしもマニュアルで仮想メモリの値を設定している場合には、その設定が適当では無いという意味になるので設定を変更する必要がある。何も設定していない場合(システム管理サイズ)には通常は発生しないはずなのだが、ハードディスクの残容量が少ない場合には出る可能性あり。そうなったらHDの空きを増やす為にいらないファイルを削除するか、実際にメモリかHDを増設するしかない。


※仮想メモリの設定方法

 システム管理サイズに設定してOS任せにしておけば良い様な気もするが、実はこれには問題もある。まず状況に応じて動的にサイズを確保するので、HDの断片化が進むようになりアクセス速度の低下が生じる。そしてそのような理由からCドライブに置いておくのは得策ではない。また自動的に確保されるサイズなのだが、これは本来物理メモリの容量が多いほど少なくて良いという事になる(メモリが多いほどスワップの発生する可能性は減るので)。しかしXPでは単純に1.5-2倍程度の仮想メモリを確保してしまうようになっており、搭載メモリが多い場合には非効率的となる。

*Cドライブ以外
*Cドライブが存在しているHD以外に、物理的に他のHDが搭載されているならばそのHD上のドライブ
*アクセス速度の速いHD上のドライブ
*カスタムサイズを選択して、初期値と最大値を同じ値に設定

 全てが適えられる必要は無いが、上記がパフォーマンスを上げる為の基本的な仮想メモリの設定方法となる。カスタムサイズで指定する値は、物理メモリが256MBなら768MB、512MBなら1GB、1GB以上なら500MB-1GB程度を目安にすれば良いだろう。もしエラーが出るようならば値を増やせば良い。


※メモリ容量のチェック

 ゲームのパフォーマンスに問題が有る場合に、現在のメモリ容量が足りているのかどうかをチェックする方法(2K, XP)。Alt + Ctrl + Delete押下にてタスク・マネージャが起動されるのでこれを使う。


 注目すべき項目は以下

*PF使用量(メモリ使用量)
 物理メモリと仮想メモリ併せてどれだけ使用しているか。図の例では300MB以上の値が使われている事を示している。

*物理メモリ

 合計: 物理メモリ容量(画面では2GB)
 利用可能: 現在の空き容量

*コミットチャージ

 合計: OSやアプリが使用中のメモリ量
 制限値: 物理メモリと仮想メモリの合計容量
 最大値: 起動してからの合計の最大値


 つまり「物理メモリの合計」よりも「コミットチャージの合計」が多くなるとHDへのスワップが発生するという意味になり、「コミットチャージの最大値」が「物理メモリの合計」よりも多ければ、起動してからスワップが起きているという事になる。


1.起動時の値
 第一のチェックポイントはPC起動直後。何もアプリを起動していない状態で見てみる。XPを素(最低限の状態)で起動させた場合にはおそらくコミットチャージの値は100MB以下(単位はKBなので5桁以下の意味)と思われるが、実際にはアンチウイルス等起動時に立ち上がる設定のアプリが幾つか有るのでこれよりは多くなる。
 この時に「物理メモリの合計」に「コミットチャージの合計」が近い場合には危険信号(メモリ不足)。「コミットチャージの合計」が上回っているケースでは、既に起動した時点でスワップが発生している事になりゲーム用のPCとして論外と言わざるを得ない。

 メーカー製の箱売り販売PCの場合には大量の付属ソフトを自動起動の設定にしてある事が多く、それらが無駄にメモリを使っているという可能性がある。常時使用しない物は自動起動しないようにしてメモリを空けるようにしておくべき。方法はそのアプリの内部に設定が有るか、タスクバーに存在しているならばそれを右クリックして自動起動の設定が中に無いかを確認。或いはスタート>ファイル名を指定して実行からmsconfigを起動してやり、そこのスタートアップタブにてチェックされている物が自動起動されるソフトなので、該当すると思われる物のチェックを外してみるといった方法が有る。

2.最大値のチェック
 ゲームソフトでメモリ不足の疑いがある物を起動してプレイ。終了後に「コミットチャージの最大値」を確認してみる。これが「物理メモリの合計」よりも多いならばスワップが起きている事になり、オーバーしている量が多いほど頻繁にスワップが発生しているという意味になる。どの程度気になるかはそのゲームにもよるし個人差もあるはずだが、概ね「物理メモリの合計」の1.2倍を超えると目立ってスワップの発生を感じられるようになり、1.5倍以上になるとプレイに支障を来たすレベルという風になるとされている。

 対策としては使用メモリ量に関連するゲーム内のOption設定を下げるか、実際にメモリの増設を考えるしかない。なおゲームの場合にはビデオカードのVRAM容量が多い物にアップグレードする事でその分メインメモリに回される量が減ったりするので、必ずしもメインメモリの増設が最適な対応とは限らないので注意。



      目次