仮想メモリの警告と最適化。低スペックマシンのパフォーマンス向上。
仮想メモリとは・・・
ハードディスクをメインメモリの代用として利用するOSの機能。また、その機能を利用して確保された、実際のメモリ容量以上のメモリ領域。「仮想記憶」とも言う。ハードディスク上に「スワップファイル」と呼ばれる専用の領域を用意して、メモリ容量が不足してきたら使われていないメモリ領域の内容を一時的にハードディスクに退避させ、必要に応じてメモリに書き戻すことで実現される。スワップファイルの内容を入れ替える動作を「スワップ」という。メモリ容量が少ないとスワップ動作が頻繁に発生し、性能の低下につながる。
仮想メモリの警告
PCで作業中に初めて下記の様な警告が出ました。
仮想メモリ最小値が低すぎます。
システムの仮想メモリーがなくなってきています。
仮想メモリページファイルのサイズを増やしています。
この処理の間、いくつかのアプリケーションのメモリ要求が拒否されることがあります。
流石に画像編集ソフトで作業しながらウェブブラウザで動画視聴ページをいくつも開いていたので、負荷が高かったみたいです。
念の為という事で、設定を確認して見ました。
状況をタスク マネージャで確認する
まずは[パフォーマンスタブ]左下、[コミット チャージ]の見方から。
- 合計
現在実行されているすべてのプロセスによって使用されている仮想メモリ・サイズ。上にある[PF 使用量]の棒グラフの値と同じ。この値が物理メモリのサイズを超えていると、入りきらない部分がディスクへスワップ・アウトされていることになる。 - 制限値
物理メモリ・サイズ+ページ・ファイル・サイズになっている。 - 最大値
システムの起動時から現在までの間に使用された仮想メモリ・サイズのピーク値の履歴。制限値と見比べるべき数値。
他の部分の説明も知りたい方はこちらへ。
参考:SOHO MIND | タスクマネージャでメモリを調査
Windows 2000 / Windows XPでは、デフォルトで搭載物理メモリの1.5倍のサイズのページ・ファイルが作成されるそうです。
(物理メモリとページ・ファイルを加えた容量が使用可能な仮想メモリ・サイズになるので、デフォルトでは物理メモリの250%(2.5倍)までのメモリが使用可能ということになります。)
アプリケーション実行時にページ・ファイルが足りなくなるとダイナミックにページ・ファイルのサイズが拡大されるということで、その作業中に警告が表示されるんですね。
適切な仮想メモリの値をログをとって調査する
[コミット チャージ]内の[最大値]の値が、システムで必要な仮想メモリ容量ということは解りました。
しかしながら、できるだけ長期にわたって使用仮想メモリ容量のログなどをとって判断すべきという人もいるので、気になる方は参考ページを貼り付けておきます。
ログの取り方と、表示のさせ方が載っています。
参考:パフォーマンスログと警告
仮想メモリの値を設定する
ページ・ファイル・サイズは物理メモリと同じくらいか、最大でも2倍くらいまでに収まるように物理メモリを増設することが望ましい。と、殆どのサイトが言っている様なので、それに従っておきましょう。
私の端末は物理メモリが1Gありますので、PFサイズは2Gに設定する事にします。
この時に、前述した方法で確認してある[コミットチャージ]の[最大値]が3Gを超えていたら、物理メモリを増設する必要がありますね。そこまで負荷を掛けるアプリケーションを使用する場合、「CPUのパフォーマンスが足りない」なんて話も出てくると思うので統合的に判断して下さい。
- [コントロールパネル]→[システム]→[詳細設定]タブ→[パフォーマンス]
- [パフォーマンス オプション]→[仮想メモリ]
- [ドライブ]を選択し、[カスタムサイズ]のラジオボタンを選択し、[初期サイズ]、[最大サイズ]に2000(MB)と入力。
初期サイズと最大サイズを同じ値にする理由は以下。
ページファイルは使っているうちにフラグメンテーションが発生し、性能に悪影響を与えると考える者もいる。これに対する助言としては、ページファイルのサイズを固定することでWindowsがそのサイズを変更できないようにするという対策がある。ただし、それによってアプリケーションが仮想メモリサイズ以上のメモリを要求した場合に問題が発生することを心配する人もいるだろう。そのような場合、メモリの確保に失敗するとメモリを要求したプログラムが動作を継続できなくなるだけである。OSがクラッシュすると誤解する人もいるが、Windowsカーネルはメモリープールを持っており、OS自体がクラッシュする事は無い。またディスクフルで無い限り、ページファイルと物理メモリが不足した時にはシステムパーティションに隠しページファイルが作られ、そこへページをストアする。またページファイルが拡張されなければならないような急激なメモリ確保を要求した場合、そのメモリ確保要求は失敗する。ページファイルの拡張はシステム全体の統計から計算され、メモリ要求が来る前に事前に確保されている。別の見方として、ページファイルが先頭から順にシーケンシャルにアクセスされることはないから、フラグメンテーションを防いでも意味がないと考える人もいる[4]。いずれにしてもメモリを大量に使用するアプリケーションを使うならページファイルが大きいに越したことはないし、ディスク容量を余分に使用する以外に問題はない。
念の為、ということです。
余談ですが、会社の端末は物理メモリが2G、制限値が5Gとなっており、仮想メモリ専用にパーテーションが設けられていました。
こういった処置をすればフラグメンテーションが起きても関係なさそうです。
フラグメンテーションが起きると困るのは、メモリに対してではなくて、断片化したページファイルが原因で効率良くデフラグが出来なくなる事です。
ということで、自己責任の下で作業してみてくださいな。