[System Environment] | ||||||||||||||
ページ・ファイルによるディスクのフラグメントを防止する方法
|
||||||||||||||
|
解説 |
Windows OSの仮想メモリ・システムは、ハードディスク上に作成したページ・ファイル(デフォルトではWindowsがインストールされている%SystemDrive%\pagefile.sys)と、物理メモリ上のプログラム・コードやデータをスワップすることで、物理メモリ・サイズを大幅に超える仮想メモリ空間をアプリケーションに対して提供している。
従来のWindows 3.xでは、ページ・ファイル(当時はスワップ・ファイルと呼んでいた)は、すべてのクラスタ(ディスク領域の管理単位)がディスク内で物理的に連続していなければならないという制限があった。スワップによるディスクの読み書きにかかる時間は、システム全体に大きな影響を及ぼす仮想メモリ・システムの性能に直結するため、遅いヘッド・シークなどを行わずにページ・ファイルを読み書きできるようにする措置だった。しかしこの制限は、Windows 95で解消され、ページ・ファイル(スワップ・ファイル)は必ずしも物理的に連続している必要がなくなった。またシステムの実行時にページ・ファイル・サイズが不足したときには、仮想メモリ・システムがページ・ファイルをダイナミックに拡大できるようにされた。
ページ・ファイルにまつわる落とし穴
Windows 2000/XPはどうかといえば、Windows 9x同様、ページ・ファイルは物理的に連続している必要もないし、ファイル・サイズが不足したら、ダイナミックにサイズを拡大するようになっている。デフォルトのページ・ファイル(pagefile.sys)は、%SystemDrive%(通常はC:)のルート・ディレクトリに作成され、ファイル・サイズは物理メモリ・サイズの1.5倍になっているはずだ(ただしpagefile.sysには「隠しファイル」属性が付いているので、標準状態のエクスプローラでは見えない)。例えば96Mbytesメモリ搭載システムなら144Mbytes、128Mbytesメモリ搭載システムなら192Mbytes、256Mbytesメモリ搭載システムなら384Mbytesとなる。またページ・ファイルの最大サイズは、デフォルトでは物理メモリ・サイズの3倍に設定されている(同じく96Mbytesメモリ搭載システムなら288Mbytes、128Mbytesメモリ搭載システムなら384Mbytes、256Mbytesメモリ搭載システムなら768Mbytes)。つまり、実行時にページ・ファイルが不足したら、このサイズまでは自動的に拡張可能ということだ。
大容量ディスクが常識となった現在では、結論からいって、よほどディスク容量の少ないシステムで使っているのでもない限り、通常はページ・ファイルのサイズを意識することはないし、そもそも、ページ・ファイルの存在すら意識する必要もない。一見すると、ユーザーは仮想メモリ・システムなどを意識することなく、メンテナンス・フリーでWindows 2000/XPを使い続けられるように思える。
しかし次の画面に注目していただきたい。これは筆者が普段作業用として使用しているデスクトップPC(256Mbytesメモリ、8Gbytesディスク搭載システム)にWindows 2000 Professionalをインストールし、デフォルト設定のまま半年ほど使用した後、ディスク・デフラグ・ツール(Diskeeper 5.0)を使ってディスク内のフラングメント(断片化)の状態を調べたところである。
約半年運用したWindows 2000システムでディスクのフラグメントを調査した結果 | |||
Windows 2000 Professionalをインストールし、半年ほど運用した後、ディスク・デフラグ・ツール(Diskeeper 5.0)を使ってディスクのフラグメント(断片化)を調査した結果。少々見えにくいが、黄色い部分がページ・ファイル領域である。これを見れば、ページ・ファイルが激しくフラグメントを起こしていることが一目瞭然である。面倒なことに、ページ・ファイルはシステムに起動時にロックされるので、デフラグメント・ツールを実行してもクラスタを移動できない(つまりデフラグメント処理の壁となってしまう)。 | |||
|
画面の黄色い部分がページ・ファイルの領域である。詳しく説明するまでもなく、ページ・ファイルの領域が、ディスク全体にわたって激しくフラグメント(断片化)を起こしていることが分かる(画面はDiskeeper 5.0を実行した結果。Windows 2000/XPに標準で組み込まれているデフラグメント・ツールでは、「ページ・ファイル」は色分け表示されない)。実は筆者の環境は、Windows 2000の起動トラブルがあったため、1度だけディスクをフォーマットせずに上書きインストールした。これだけ激しくフラグメントが起きているのは、それも原因しているかもしれない。いずれにしても、いくらディスクが高速化したとはいえ、これではスワップのたびに大量のヘッド・シークが発生し、結果的に仮想メモリ・システムの処理に大きなオーバーヘッドを強いているはずだ。
さらにたちが悪いのは、ページ・ファイルは、仮想メモリ・システムによって、Windowsの起動時にロックされるので、このままディスク・デフラグ・ツールを実行しても、ページ・ファイルのクラスタは移動できないということだ。つまりフラグメントが進んだページ・ファイルは、デフラグメント処理を行う際の壁になってしまう(別売のDiskeeperには、Windowsシステムが起動する前にデフラグを実行する「ブートタイム・デフラグ」機能があり、これを利用すれば、ページ・ファイル領域もデフラグメントできるようになっている)。
ページ・ファイルのフラグメントを防止するには
このようなページ・ファイルのフラグメントが発生するのは、ページ・ファイルのダイナミックな拡張を許すからである。ディスクにフラグメントが発生していない初期の段階に(ないしは、十分なデフラグメントを行った状態で)、物理的に連続したページ・ファイル領域を固定的に確保し、システム実行時にはダイナミックに拡張しないように設定すれば、こうした問題は発生しないはずである。
ただしこのようにページ・ファイル・サイズを固定してしまうと、ページ・ファイルが不足すると同時にメモリ不足エラーが発生することになるので、確保するページ・ファイルのサイズは慎重に決定すべきである。この方法については、別稿の「Windows TIPS:最適なページ・ファイル・サイズを知るには」でご紹介しているので参照されたい。今回の例では、384Mbytesのページ・ファイルを確保することにする。
操作方法 |
操作その1:ディスクのデフラグメントを行う
確保するページ・ファイルはなるべく物理的に連続させたいので、まずはディスクのデフラグメントを行う必要がある。完全なデフラグメントという見地からいえば、ディスクをいったんフォーマットし、Windowsの再インストールから始めるのが理想的なのだが、それが不可能なら、Windows付属のデフラグメント・ツールを使ってデフラグ処理を行う。
ただし前述した通り、ページ・ファイルのクラスタはデフラグ・ツールでは移動できないので注意すること。これを回避するには、ほかのボリュームにいったんページ・ファイルを移動させる(具体的な方法については別稿「Windows TIPS:ページ・ファイルを別ドライブに一時待避し、デフラグを効率よく行う方法」を参照)などが有効である(あるいは別売のDiskeeperを購入し、「ブートタイム・デフラグ」を実行する)。または、ページ・ファイルに頼ることなく、Windowsシステムを起動し、デフラグメント・ツールを実行できるに足るメモリを搭載しているなら、ページ・ファイルをいったん「なし」にしてシステムを再起動し、デフラグメントを実行するという手もある。
操作その2:ページ・ファイルの初期サイズと最大サイズを一致させる
デフラグメント処理を終えたら、コントロール・パネルの[システム]アプレットを実行し(または[マイ コンピュータ]を右クリックして[プロパティ]を実行する)、表示される[システムのプロパティ]ダイアログの[詳細]タブ(Windows XPでは[詳細設定]タブ)をクリックする(Windows XPのカテゴリ表示の場合は、コントロール・パネル−[パフォーマンスとメンテナンス]−[システム]を実行する)。
コントロール・パネルの[システム]アプレットを実行したところ(Windows 2000の場合) | |||
[システムのプロパティ]ダイアログが表示されたら、[詳細]タブをクリックし、[パフォーマンス オプション]ボタンをクリックする(Windows 2000の場合)。Windows XPでは、[詳細設定]タブをクリックし、[パフォーマンス]グループにある[設定]ボタンをクリックする。 | |||
|
画面はWindows 2000でのものだが、Windows XPでも基本的には同じ選択項目がある。ここで[パフォーマンス オプション]ボタン(Windows 2000の場合)または[パフォーマンス]−[設定]ボタン(Windows XPの場合)をクリックすると、次のような[パフォーマンス オプション]ダイアログが表示される。まず最初はWindows 2000の場合。
[パフォーマンス オプション]ダイアログ(Windows 2000の場合) | |||
[仮想メモリ]グループには、現在のページ・ファイル・サイズの合計が表示されている。 | |||
|
Windows XPでは次のようなダイアログが表示される。このようにWindows XPでは、[視覚効果]と[詳細設定]という2つのタブがあるので、[詳細設定]をクリックする。
[パフォーマンス オプション]ダイアログ(Windows XPの場合) | |||
Windows XPでは、[視覚効果]と[詳細設定]という2つのタブがあるので、[詳細設定]をクリックする。Windows 2000のそれと比較すると、[メモリ使用量]というグループが追加されている。 | |||
|
[仮想メモリ]グループの[変更]ボタンをクリックすると、次の[仮想メモリ]ダイアログが表示される。こちらもWindows 2000/Windows XPともほぼ同じものだが、Windows XPでは選択項目がいくつか追加されている。
[仮想メモリ]ダイアログ(Windows 2000の場合) | ||||||||||||
ページ・ファイル・サイズを固定するには、ページ・ファイルの[初期サイズ]と[最大サイズ]に同じ値を指定すればよい。 | ||||||||||||
|
[仮想メモリ]ダイアログ(Windows XPの場合) | ||||||||||||
Windows 2000のダイアログと比較すると、レジストリ・サイズの指定項目が別に移動され、代わりにページ・ファイル・サイズの選択項目が2つ追加されている。 | ||||||||||||
|
Windows XPの[仮想メモリ]ダイアログにある[システム管理サイズ]は、ページ・ファイルの適当なサイズをWindowsに決定させるための選択肢、[ページング ファイルなし]はこのドライブのページ・ファイルを無効化するための選択肢である(通常は選択しない)。
ページ・ファイルのサイズを固定したければ、上の[仮想メモリ]ダイアログで、初期サイズと最大サイズに希望のサイズを指定すればよい(デフラグ処理のために、ページ・ファイルをほかのボリュームに移動したときには、元のボリュームに戻す)。
こうしてシステムを再起動すれば、起動時に指定サイズ(初期サイズ)のページ・ファイルが確保される。デフラグメント処理を行ってあるので、この際確保されるページ・ファイルは、物理的に連続した領域に割り当てられる。今回の設定により、最大サイズも初期サイズと同じ値を指定しているので、ページ・ファイルのダイナミックな拡張は行われず、ひいてはページ・ファイルによるディスク・フラグメントは発生しないようになる。
関連記事(Windows Server Insider) | ||
Windows TIPS:最適なページ・ファイル・サイズを知るには | ||
Windows TIPS:ページ・ファイルを別ドライブに一時待避し、デフラグを効率よく行う方法 | ||
Windows TIPS:ディスク デフラグ ツールの制限について | ||
この記事と関連性の高い別の記事
- 複数のディスクにページ・ファイルを分散させて、ページ・ファイル・アクセスを高速化する(TIPS)
- ページ・ファイルを別ドライブに一時待避し、デフラグを効率よく行う方法(TIPS)
- pagefileconfigコマンドでページ・ファイルを設定する(TIPS)
- 最適なページ・ファイル・サイズを知るには(TIPS)
- タスクマネージャーのパフォーマンスタブの見方(Windows 7/Server 2008 R2編)(TIPS)
このリストは、デジタルアドバンテージが開発した自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
更新履歴 | |
|
「Windows TIPS」 |
- Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる (2017/7/27)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう - Azure Storage ExplorerでStorageを手軽に操作する (2017/7/24)
エクスプローラのような感覚でAzure Storageにアクセスできる無償ツール「Azure Storage Explorer」。いざというときに使えるよう、事前にセットアップしておこう - Win 10でキーボード配列が誤認識された場合の対処 (2017/7/21)
キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。英語キーボードが日本語配列として認識された場合などは、正しいキー配列に設定し直そう - Azure Web AppsでWordPressをインストールしてみる (2017/7/20)
これまでのIaaSに続き、Azureの大きな特徴といえるPaaSサービス、Azure App Serviceを試してみた! まずはWordPressをインストールしてみる
|
|