Windowsの仮想メモリ(ページングファイル)の最適化は必要?不要?仕組みを理解して疑問を解決
Windowsの仮想メモリ(ページングファイル)は、物理メモリが足りなくなった際に、データを一時的に退避させるメモリ領域です。
仮想メモリの最適化とは、自身の使用環境において仮想メモリの値を設定することを指します。
仮想メモリの最適化ですが、結論から言うと、
ページングファイルに依存するアプリケーションがある場合と、システムクラッシュする場合には必要
となります。
Windows OSには搭載できる最大物理メモリサイズと言うものがあります。
CPUアーキテクチャがx86(32bit)の場合、一部のOSを除き、現行のWindows10も含めて搭載できる最大物理メモリサイズは4GBまでです。
Memory Limits for Windows and Windows Server Releases(Microsoft.com)
そして、最大物理メモリサイズの4GBを丸ごと使用できるわけではなく、OSにより使用可能なメモリは実質3GB程度になります。これは管理外メモリ領域と言って、残りの1GBはその他のデバイスに割り当てられるからです。
上記の理由から、動画編集ソフトや3DCGなどのメモリを多く消費するソフトを使う場合、物理メモリ4GBでは全くと言っていいほど足りません。画像編集ソフトのフォトショップでも8GB推奨となっています。最初から仮想メモリの最適化でパフォーマンスを求めるよりも、CPUアーキテクチャx64(64bit)版で物理メモリを増設するのがベストです。
また、メモリを多く消費するソフトを使う場合は、逆に仮想メモリに逃げないようにした方がパフォーマンスも安定するケースがあります。その場合の仮想メモリサイズは0MB(なし)です。
しかし、Windowsではメモリの不足時やアプリケーションの問題発生時などに、クラッシュダンプファイルを作成する場合があります。
メモリダンプファイルとも呼ばれ、メモリの内容を瞬間的にハードディスクなどに出力するファイル。アプリケーションの異常終了やシステムクラッシュ時に作成される。
Microsoft.comではこう書かれています。
システムのクラッシュ時にクラッシュダンプファイルを作成する場合は、ページングファイルまたは専用のダンプファイルが存在し、システムのクラッシュダンプ設定をバックアップするために十分な大きさである必要があります。 それ以外の場合、システムメモリダンプファイルは作成されません。
上記の理由から、システムクラッシュが発生する場合は仮想メモリサイズを設定する(仮想メモリの最適化)必要があります。
そもそも、潤沢に物理メモリを搭載している場合、理論上、仮想メモリー(ページングファイル)の最適値は0MBです。メモリへのアクセス速度とストレージディスクへのアクセス速度には大きな差があり、わざわざ「仮想メモリ」を速度の遅いストレージディスク上に設定する必要はないのです。ただし、プログラムによってはページングファイルに依存しているものも多いので、システムから警告表示される場合は仮想メモリサイズを設定しなければなりません。
仮想メモリを最適化する
追記:ドライブロケーションの最適化は、現在私のPCでフリーズが発生してる要因の一つとして疑っている為、Cドライブに設定を戻しています。
Windowsの標準設定では、仮想メモリはシステムが自動で管理する「可変容量」になっています。これを「固定容量」にするには、キーボードショートカットの + Rでファイルを指定して実行にsysdm.cplと入力します。
詳細設定のパフォーマンスにある設定を選択。
詳細設定の仮想メモリにある変更を選択。
「すべてのドライブのページングファイルのサイズを自動的に管理する」のチェックを外す。
以下のように設定します。
- Cドライブ以外のなるべく高速なドライブを選択(ドライブロケーションの最適化)
- カスタムサイズは同サイズを入力
- 推奨サイズを参考にする
- カスタムサイズを入力後、設定を選択
- OKを選択
仮想メモリの確認方法
仮想メモリはpagefile.sysと言うファイルで表示されます。
確認方法はコントロールパネルからエクスローラーオプションで「隠しファイル、隠しフォルダ、および隠しドライブを表示する」にチェックを入れて、「保護されたオペレーションシステムファイルを表示しない(推奨)」のチェックを外す必要があります。
設定したドライブを確認するとpagefile.sysあります。
コミットチャージについて
仮想メモリを最適化するに当たって、コミットチャージは理解しておいた方がいいです。
コミットチャージとはコンピューターで動作中のプログラムが必要とするメモリの合計値のことです。
コミットチャージが物理メモリの合計値を上回った場合、動作中のプログラムの強制停止や、コンピューターの低速化、システムクラッシュなどが発生します。
コミットチャージはタスクマネージャーから確認できます。キーボードショートカットのCtrl + Shift + Escで起動します。
パフォーマンスタブからメモリを選択します。コミットチャージに関する値の見方は以下のようになっています。
- 物理メモリの合計値
- コミットチャージの最大値は、物理メモリの合計値とすべてのページングファイルの合計値になります
- コミットチャージされているメモリの値は、ページングファイルによって拡張されます
上の画像の場合、
となり、仮想メモリは15.9GBに設定されているのが分かります。
システムのコミットチャージは、システムのコミット制限を超えることはできません。 この制限は、物理メモリ (RAM) の合計と、すべてのページングファイルが組み合わされたものです。 ページングファイルが存在しない場合、システムのコミット制限は、インストールされている物理メモリより若干少なくなります。 システムによってコミットされる最大メモリ使用量は、システムによって大きく異なる場合があります。 したがって、物理メモリとページングファイルのサイズも変更されます。
大容量の物理メモリを搭載している場合
使用するメモリ消費量にもよりますが、物理メモリを8GB以上搭載しているならば「すべてのドライブのページングファイルのサイズを自動的に管理する」にチェックを入れて自動的に管理した方がいいでしょう。この場合、仮想メモリは「可変容量」となります。
大容量の物理メモリがインストールされている場合、使用率が高いときにシステムのコミットチャージをサポートするためにページングファイルが必要となる場合があります。 たとえば、64ビット版の Windows と Windows Server では、32ビット版のサポートよりも物理メモリ (RAM) がサポートされています。 利用可能な物理メモリは、十分な大きさである必要があります。
ただし、ページファイルのサイズを構成する理由は変更されていません。 必要に応じて、常にシステムクラッシュダンプのサポートについて説明しています。必要に応じて、システムのコミットの制限を延長する必要があります。たとえば、大量の物理メモリがインストールされている場合、使用率が高いときにシステムのコミットチャージをバックする必要がないことがあります。 使用できる物理メモリは、そのために十分な大きさである場合もあります。ただし、システムクラッシュダンプを戻すには、ページファイルまたは専用のダンプファイルが必要になることがあります。
仮想メモリなし、もしくは仮想メモリをカスタムサイズで小さい値にすると、コミットチャージの最大値も小さくなります。「すべてのドライブのページングファイルのサイズを自動的に管理する」にした方がいいのは以下のような理由もあります。
システムのコミットチャージは、システムでコミットされたすべての仮想メモリのコミット済みまたは “約束” メモリの合計です。 システムのコミットチャージがシステムのコミット制限に達すると、システムとプロセスはコミットされたメモリを取得できない可能性があります。 この状況では、フリーズ、クラッシュ、その他の誤動作が発生する可能性があります。 そのため、システムのコミット制限は、使用率が高い場合にシステムのコミットチャージをサポートするように十分に設定してください。
要は、その人のPCの使い方やシステム要件次第で仮想メモリの設定値は異なると言うことです。それならば始めからシステムに自動で管理してもらった方が効率的です。
ただし、仮想メモリなしに設定しても、コミットの最大値は物理メモリより少し低い値に設定されますので、結局はその人の環境、物理メモリ次第となります。
ページファイルがあるとディスクのフラグメンテーション(断片化)が発生し、ファイルエラーを誘発すると言う意見を本で見ましたが、定期的にデフラグすれば解決です。
結論
冒頭でも書いた通り、物理メモリが少ない場合も、物理メモリが多い場合も、仮想メモリの最適化は実行しておいた方がいいでしょう。
システムクラッシュやメモリ不足の警告が出る場合は、物理メモリを増設するのが一番です。
一部のWindows OSを除き、32bit版から64bit版に乗り換えることで物理メモリを4GB以上に増やすことができますが、CPUやマザーボードにも搭載できる物理メモリの上限がありますので、事前によく確認しておく必要があります。「自作PC」「BTOパソコン」などで検索すると詳しく説明しているサイトはいくらでも出てきますので調べてみてください。