Windows 2000 Insider/PC Insider合同特別企画
Windows XPの正体

Windows XP性能評価(2)
OS起動/アプリケーション起動性能

1.ディスク・アクセスをモニタし、先読みすることで高速化を図るプリフェッチ機能

デジタルアドバンテージ
2001/01/10

 増え続けるOSやアプリケーションの起動時間を短縮し、より機能性の高いOSを実現するため、Windows XPでは「プリフェッチ(prefetch)」と呼ばれる機能が新たに追加された。「fetch」は「取り出す」という意味で、「prefetch」を直訳すれば「あらかじめ取り出す」という意味になる。Windows XPに搭載されたプリフェッチ機能を簡単に説明すれば、OSやアプリケーションの起動時のディスク・アクセスを監視し、ディスクがどのようにアクセスされるかを調査しておき、次回からはその情報を元にして、ディスク内のプログラム・コードなどを先読みしてメモリにロードするというものだ。

 Windows OS(Windows 9x/Me/2000/XP)を始め、多くのOSで採用されている仮想記憶システムでは、実行するプログラム・ファイル全体をメモリにロードしてしまうのではなく、当面必要な部分だけをメモリにロードし、そうでないものは必要になるまでロードしないようにする。これにより、物理メモリ・サイズを超えたメモリ空間を仮想的にアプリケーションに提供できるようになる。必要になった時点でメモリ・ロードを実行することは、オンデマンド・ロード(on-demand load。「on-demand」は「要求があり次第」という意味)などと呼ばれることもある。

 限られた物理メモリで、OSや多数のアプリケーションを同時実行するために、仮想記憶システムは不可欠なものである。しかしOSやアプリケーションの起動では、初期状態を維持するために、必要な一連のプログラム・コードをメモリにロードする必要があるのだが、仮想記憶システム上でこれを実行すると、起動途中で負荷の重いページ・フォルト(アクセスに必要なプログラム・コードがまだメモリにロードされていないときに発生する例外。この例外を引き金として、オンデマンド・ロードが開始される)が発生している。

 またOSやアプリケーションを起動するためにロードしなければならないデータが、ハードディスク上で連続しているとは限らない。通常は、起動の過程でディスク・シークを何度も繰り返し、必要なイメージがロードされている(この様子は、OSやアプリケーションの起動時にディスクのシーク音を聞いていれば分かる)。

 Windows XPのプリフェッチ機能は、しくみ上やむを得ないとはいえ、無駄なページ・フォルトやディスク・シークを省略しようとするものだ。具体的には、システムの起動直後や、各アプリケーション起動直後のディスク・アクセス・ログを記録しておき、次回以降の実行では、そのログに基づいてディスクの内容を先読みして起動を高速化する。この際に記録されるアクセス・ログは、%SystemRoot%\Prefetchディレクトリにプログラム・ファイルごとに記録され格納される。このログ・ファイルには、プログラムごとのディスク・アクセス・パターンのデータが記録されている(Windows XPのプリフェッチ機能の詳細については別項「特集:Windows XPとは何か? 18.アプリケーション起動の高速化」を参照)。

 さらにWindows XPに付属するデフラグメント・ユーティリティ(ディスク デフラグ)は、このプリフェッチされたアクセス・ログを参照し、できるだけディスクのヘッド・シークを省略してロードを実行できるようにディスク領域を再配置する機能が追加されている。システムがアイドルになると、Windows XPは自動的にデフラグメント・ユーティリティを起動して、OSの起動ファイルとアプリケーションの再配置処理をバックグラウンドで実行する。ただしこの際に実行されるのはプリフェッチ・ログに基づく起動ファイルの再配置のみで、通常のデフラグメント処理は実行されない。これと同じ処理をマニュアルで実行したければ、コマンドラインから「-b」オプションをつけてdefrag.exeを実行する。例えば次のようにする(c:ドライブに対して処理を実行する場合)。なおデフラグメント・ユーティリティの詳細については、別項「運用:ディスク管理ツール徹底活用」を参照されたい。

defrag c: -b

ベンチマーク・テスト環境について

 このプリフェッチ機能に加えWindows XPでは、ディスク・ドライブの検出タイムアウト時間の短縮や、デバイス・ドライバ/各種初期プロセスの同時並行処理や先読みなどにより、OSの起動速度向上がなされている。そこで本稿ではこれらを確認するために簡単なベンチマーク・テストを実施した。テストは2種類で、1つはPCの電源を入れてからログオン・プロンプト画面(Windows XPでは「ようこそ」画面)が表示されるまでの時間を、もう1つはOfficeアプリケーションなど7個を一斉に起動開始し、それらすべてが入力待機状態になるまでの時間を計測した。これらをWindows 2000とWindows XPの双方で測定し、処理時間を比較してみる。

 テストを実施したマシンの構成は次のとおりである。

スペック 内容
CPU Intel Celeron-733MHz
チップセット Intel 810
使用メモリ PC-100対応SDRAM
搭載メモリ 256Mbytes
ハードディスク Ultra ATA/100対応のIDEハードディスク(30Gbytes/5400rpm/キャッシュ:2Mbytes)
ファイルシステム NTFS
使用グラフィックス・モード 1024×768ドット 16bitカラー
今回のテストで使用したPC環境

 お気付きの方がいらっしゃるかもしれないが、基本的にこのマシンは「Windows XPの正体:Windows XPアプリケーション実行性能テスト」で「ローエンド構成」として使用したものと同じで、ハードディスクと使用グラフィックス・モードが異なるだけである。CPU、ハードディスクとも、現時点では決して高速な部類ではないが、今回はハードウェアの性能を評価するものではないので、あまりに短時間で処理が完了してしまうと測定誤差が大きくなりがちなので、意図的にある程度低速な構成を用いている。

 テストで使用したWindows 2000とWindows XPは次の構成である。両者とも、基本的にインストール直後の状態でテストを開始している。なおテストでは、同一モデルのハードディスクを2台用意し、それぞれにWindows 2000とWindows XPをインストールして(さらにOfficeアプリケーションもインストールしている)、ディスクを交換してテストした。また、どのテストも、同一のテストを5回実行し、平均値を求めている。

OS 内容
Windows 2000 Windows 2000 Professional+Service Pack 2。Windowsアップデートの重要な更新を適用(2001年12月現在)、Internet Explorer 6.0を追加インストール
Windows XP Windows XP Professionalをデフォルト構成でインストール
アプリケーション Office 2000 SR-1、SP2をインストール
テストで使用したWindows OS/アプリケーションの構成
 
関連記事(Windows Server Insider)
Windows XPとは何か? 18.アプリケーション起動の高速化
ディスク管理ツール徹底活用
Windows XPアプリケーション実行性能テスト
 

 INDEX
  Windows XP性能評価(2)−OS起動/アプリケーション起動性能
  1.ディスク・アクセスをモニタし、先読みすることで高速化を図るプリフェッチ機能
    2.テスト1:OS起動速度テスト
    3.テスト2:アプリケーション起動速度テスト
 
 「Windows XPの正体」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間