連載
» 2019年02月22日 05時00分 公開

Tech TIPS:【Windows 10対応】ページファイルを別ドライブに移動してパフォーマンスを向上させる

通常、仮想記憶を実現するためのページファイルは、システムドライブのルートディレクトリに作成される。しかしシステムに複数のディスクが装着されているなら、ページファイルをシステムとは別ドライブに設定することで、パフォーマンスを向上させることができる。

[打越浩幸,デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象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つとか、それ以上同時に実行させることができる。

Windows OSのページファイルの例 Windows OSのページファイルの例
Windows OSをインストールすると、デフォルトではC:\のルートに「システム」と「隠し」属性の付いた仮想記憶用のページファイルが作成される(swapfile.sysはWindows Storeアプリ用のキャッシュファイル。ページファイルではない)。メモリが不足した場合、実行中のプログラムの一部をこのファイルへ待避させることにより、メモリ不足で実行できなくなることを防ぐ。このファイルをC:以外の高速なドライブへ移動させることにより、多少なりともシステムのパフォーマンスが向上する可能性がある。

 ただしディスクの読み書き速度はメモリの読み書き速度と比較すると桁違いに遅いため、スワップ処理が頻発すると、プログラムの実行速度が大幅に低下する。無駄なスワップ処理を省いてパフォーマンスを向上させるには、メモリを追加するのが根本的な解決方法だが、それができない場合はページファイルをなるべく高速なディスクやSSD上に配置するとよい。

 TIPS「WindowsのTEMP/TMPフォルダの場所を変更する」では、TEMP/TMPフォルダをSSD上へ移動させる方法を紹介したが、本TIPSでは、さらにページファイルもC:以外のSSDなどのドライブに設定する方法を紹介する。

現在のページファイルの状態を確認する

 Windows OSは、デフォルトでは「C:¥pagefile.sys」というファイルをページファイルとして作成・使用している。このファイルの初期サイズはシステムに実装されている物理メモリサイズなどによって変わるが、大体物理メモリサイズと同じか、それより若干小さいサイズになっていることが多い。

 ページファイルが存在するドライブやそのサイズは、[システムのプロパティ]画面で確認、設定できる。

 まずTech TIPS「Windows 10でコントロールパネルの[システム]や[システムのプロパティ]を素早く開く方法」で紹介している方法などを使って[システムのプロパティ]画面を開く。そして[パフォーマンス]グループの下にある[設定]をクリックして[パフォーマンスオプション]画面を開き、[仮想メモリ]−[変更]をクリックする。

ページファイルの設定(1) ページファイルの設定(1)
ページファイルの設定は、コントロールパネルの[システム]画面から確認できる。これはWindows 10の画面例だが、それ以外のOSでも同じ。

ページファイルの設定(2) ページファイルの設定(2)
[詳細設定]タブで[パフォーマンス]にある[設定]をクリックする。

ページファイルの設定(3) ページファイルの設定(3)
[詳細設定]タブの[仮想メモリ]にある[変更]をクリックする。

 上の画面で[設定]をクリックすると次のような画面が表示される。これを見ると、現在のページファイルの場所(ドライブ)やサイズ設定(自動設定かどうかなど)が分かる。

ページファイルサイズの確認 ページファイルサイズの確認
現在のページファイルサイズの総容量や、ドライブごとに割り当て状況を確認できる。

ページファイルの場所やサイズを変更する

 上の画面から分かるように、デフォルトでは[すべてのドライブのページング ファイルのサイズを自動的に管理する]がオンになっており、ページファイルはC:\pagefile.sysだけが作成され、そのサイズは自動決定となっている(状況に応じて適宜拡大する)。

 この設定を変更すれば、なるべく高速な別ドライブにページファイルを移動させたり、複数のドライブに分散させたりすることができる。

 以下では例として、C:のページファイルを削除し、代わりにD:ドライブ(SSD)上に16GBのページファイルを用意する手順を取り上げる。C:とD:が、どちらも高速なSSDのシステムなら、両方のドライブに8GBずつ割り当てて分散アクセスさせ、パフォーマンス低下を抑えるという方法もあるので、状況に合わせて適宜利用していただきたい。

 ページファイルの設定を変更するには、まず上の画面の左上にあるチェックボックスをオフにする。するとページファイルの設定をドライブごとにカスタマイズできるようになる。ここでは、C:を[ページファイルなし]に設定し、さらにD:には初期サイズと最大サイズとして16GBを設定してみる。

ページファイルの削除 ページファイルの削除
ドライブごとに、ページファイルの割り当てを有効にしたり、無効にしたりできる。複数のドライブに割り当てると、スワップ処理の対象ドライブを分散させることができる(RAID 1のように並列アクセスするわけではない点に注意)。

 C:ドライブの設定を変更したら、必ず右にある[設定]ボタンをクリックすること。C:とD:の設定を全部済ませてから、最後に下の[OK]をクリックしても、設定は反映されないので注意する。ドライブごとに設定を変更し、その都度、[設定]をクリックする。

 なお、C:に対して[ページングファイルなし]を選択して[設定]をクリックすると次のような画面が表示されるが、これはそのまま[はい]をクリックする。

ページファイルのサイズが小さすぎる場合の警告 ページファイルのサイズが小さすぎる場合の警告
C:のページファイルを無効にしたり、カーネルメモリダンプに必要な最小サイズよりも少ないサイズを指定したりすると、このような警告が表示される。だがOSクラッシュ時のメモリダンプが不要なら(ほとんどのユーザーにとっては不要だ)、これは無視してもよい。

 ページファイルはスワップ処理に使われるだけでなく、システムにエラー(ブルースクリーン画面)が発生した場合には、メモリの内容をページファイルにダンプ(出力)しておいて、後でデバッグに利用するという特別な目的も持っている(OSのバージョンや設定によっては専用のダンプファイルを作成することもある)。そのため、ページファイルを全てなくすことは推奨されていない(もっともダンプファイルがあったところで、一般のユーザーには何の役にも立たないが)。いずれかのドライブに、ここで表示されているサイズ以上のページファイルがあれば問題ない。

 C:ドライブの設定を完了したら、次は新たにD:ドライブ側にページファイルを作成させる。サイズはシステムの自動選択に任せてもよいが、大きなサイズを割り当てたからといって常に全部使われるわけでもないので、自動拡大によるフラグメントの防止や、SSDのウェアレベリング用のプロビジョニング領域(→こちら参照)などのために、余裕があるなら最初から大きなサイズにしておいてもよいだろう。ここでは16GBにしてみる。設定後は必ず右側にある[設定]をクリックしておくこと。

ページファイルの追加(1) ページファイルの追加(1)
ドライブを選んで、サイズを指定すると、そのドライブ上にもページファイルが作成される。値を入力後、必ず右にある[設定]ボタンをクリックすること。

 設定が反映されていることを確認したら、画面下にある[OK]をクリックする。すると再起動を要求するダイアログが表示されるので、さらに[OK]をクリックしてプロパティ画面を閉じ、最後にシステムを再起動する。

ページファイルの追加(2) ページファイルの追加(2)
D:ドライブにも設定を追加したところ。全ドライブの設定が完了したことを確認してから、一番下の[OK」をクリックする。

ページファイルの追加(3) ページファイルの追加(3)
設定は、次回再起動後に反映される。

ページファイルの追加(4) ページファイルの追加(4)
システムのプロパティ画面を全部閉じるとこのような画面が表示されるので、指示に従って再起動する。

[補足]最適なページファイルサイズは?

 ページファイルサイズを大きくすれば、理論的には、物理メモリサイズが不足していても多くのプログラムを同時に実行できるようになるが、実際にはスワップ処理が多発して、逆に使いにくくなってしまう可能性もある。例えば数GBものページファイルがいっぱいになるほど多数のプログラムが同時に動作しているとすると、スワップ処理だけでも相当な時間を取られ、プログラムの動作速度は非常に低下するだろう(「スラッシング」と呼ばれる状態に陥る)。そのようなシステムでは、まずはメモリの増設を検討すべきである。

 Windows OSが自動設定で確保するページファイルの最大サイズは、Windows OSのバージョンやシステム構成によっても変わるが、だいたい物理メモリサイズの3倍までとなっている。必要なページファイルのサイズを正しく見積もるには、タスクマネージャーのリソースモニターや、Windows管理ツールに含まれるパフォーマンスモニターを使って、スワップ処理やメモリの利用状況などを調査する。詳細は以下のページを参照のこと。

「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。