通常、仮想記憶を実現するためのページファイルは、システムドライブのルートディレクトリに作成される。しかしシステムに複数のディスクが装着されているなら、ページファイルをシステムとは別ドライブに設定することで、パフォーマンスを向上させることができる。
対象OS:Windows 7/Windows 8.1/Windows 10/Windows Server 2008 R2/Windows Server 2012/Windows Server 2012 R2/Windows Server 2016
Windows OSでは、物理メモリサイズを超える大きなプログラムやサービスなどを実行するために、「仮想記憶」というシステムが使われている。プログラムを実行するためには、プログラムコードやデータが全て物理メモリ上に載っている必要がある。
しかし、メモリが不足する場合は、優先度の低いプログラム(のうちの一部)を一時的にディスク上の「ページファイル(スワップファイル)」へ書き出しておき(これをスワップアウトという)、後でまた実行する段階になってファイルからメモリ上へロードして(スワップイン)、実行する。
この仕組みを使うと、例えばメモリが4GBしかないシステムでも、1GBのサイズのプロセスを5つとか、それ以上同時に実行させることができる。
ただしディスクの読み書き速度はメモリの読み書き速度と比較すると桁違いに遅いため、スワップ処理が頻発すると、プログラムの実行速度が大幅に低下する。無駄なスワップ処理を省いてパフォーマンスを向上させるには、メモリを追加するのが根本的な解決方法だが、それができない場合はページファイルをなるべく高速なディスクやSSD上に配置するとよい。
TIPS「WindowsのTEMP/TMPフォルダの場所を変更する」では、TEMP/TMPフォルダをSSD上へ移動させる方法を紹介したが、本TIPSでは、さらにページファイルもC:以外のSSDなどのドライブに設定する方法を紹介する。
Windows OSは、デフォルトでは「C:¥pagefile.sys」というファイルをページファイルとして作成・使用している。このファイルの初期サイズはシステムに実装されている物理メモリサイズなどによって変わるが、大体物理メモリサイズと同じか、それより若干小さいサイズになっていることが多い。
ページファイルが存在するドライブやそのサイズは、[システムのプロパティ]画面で確認、設定できる。
まずTech TIPS「Windows 10でコントロールパネルの[システム]や[システムのプロパティ]を素早く開く方法」で紹介している方法などを使って[システムのプロパティ]画面を開く。そして[パフォーマンス]グループの下にある[設定]をクリックして[パフォーマンスオプション]画面を開き、[仮想メモリ]−[変更]をクリックする。
上の画面で[設定]をクリックすると次のような画面が表示される。これを見ると、現在のページファイルの場所(ドライブ)やサイズ設定(自動設定かどうかなど)が分かる。
上の画面から分かるように、デフォルトでは[すべてのドライブのページング ファイルのサイズを自動的に管理する]がオンになっており、ページファイルはC:\pagefile.sysだけが作成され、そのサイズは自動決定となっている(状況に応じて適宜拡大する)。
この設定を変更すれば、なるべく高速な別ドライブにページファイルを移動させたり、複数のドライブに分散させたりすることができる。
以下では例として、C:のページファイルを削除し、代わりにD:ドライブ(SSD)上に16GBのページファイルを用意する手順を取り上げる。C:とD:が、どちらも高速なSSDのシステムなら、両方のドライブに8GBずつ割り当てて分散アクセスさせ、パフォーマンス低下を抑えるという方法もあるので、状況に合わせて適宜利用していただきたい。
ページファイルの設定を変更するには、まず上の画面の左上にあるチェックボックスをオフにする。するとページファイルの設定をドライブごとにカスタマイズできるようになる。ここでは、C:を[ページファイルなし]に設定し、さらにD:には初期サイズと最大サイズとして16GBを設定してみる。
C:ドライブの設定を変更したら、必ず右にある[設定]ボタンをクリックすること。C:とD:の設定を全部済ませてから、最後に下の[OK]をクリックしても、設定は反映されないので注意する。ドライブごとに設定を変更し、その都度、[設定]をクリックする。
なお、C:に対して[ページングファイルなし]を選択して[設定]をクリックすると次のような画面が表示されるが、これはそのまま[はい]をクリックする。
ページファイルはスワップ処理に使われるだけでなく、システムにエラー(ブルースクリーン画面)が発生した場合には、メモリの内容をページファイルにダンプ(出力)しておいて、後でデバッグに利用するという特別な目的も持っている(OSのバージョンや設定によっては専用のダンプファイルを作成することもある)。そのため、ページファイルを全てなくすことは推奨されていない(もっともダンプファイルがあったところで、一般のユーザーには何の役にも立たないが)。いずれかのドライブに、ここで表示されているサイズ以上のページファイルがあれば問題ない。
C:ドライブの設定を完了したら、次は新たにD:ドライブ側にページファイルを作成させる。サイズはシステムの自動選択に任せてもよいが、大きなサイズを割り当てたからといって常に全部使われるわけでもないので、自動拡大によるフラグメントの防止や、SSDのウェアレベリング用のプロビジョニング領域(→こちら参照)などのために、余裕があるなら最初から大きなサイズにしておいてもよいだろう。ここでは16GBにしてみる。設定後は必ず右側にある[設定]をクリックしておくこと。
設定が反映されていることを確認したら、画面下にある[OK]をクリックする。すると再起動を要求するダイアログが表示されるので、さらに[OK]をクリックしてプロパティ画面を閉じ、最後にシステムを再起動する。
ページファイルサイズを大きくすれば、理論的には、物理メモリサイズが不足していても多くのプログラムを同時に実行できるようになるが、実際にはスワップ処理が多発して、逆に使いにくくなってしまう可能性もある。例えば数GBものページファイルがいっぱいになるほど多数のプログラムが同時に動作しているとすると、スワップ処理だけでも相当な時間を取られ、プログラムの動作速度は非常に低下するだろう(「スラッシング」と呼ばれる状態に陥る)。そのようなシステムでは、まずはメモリの増設を検討すべきである。
Windows OSが自動設定で確保するページファイルの最大サイズは、Windows OSのバージョンやシステム構成によっても変わるが、だいたい物理メモリサイズの3倍までとなっている。必要なページファイルのサイズを正しく見積もるには、タスクマネージャーのリソースモニターや、Windows管理ツールに含まれるパフォーマンスモニターを使って、スワップ処理やメモリの利用状況などを調査する。詳細は以下のページを参照のこと。
Copyright© Digital Advantage Corp. All Rights Reserved.