特集
|
![]() |
Windows XPでは、システムやアプリケーションの起動、休止状態からのリジュームなどを高速化するために「プリフェッチ」という機能が追加されている。システムやアプリケーションの起動時間は短い方がよいに決まっている。マシンの性能にもよるが、Windows 2000では、起動に1分以上はかかっていた。Windows XPでは、この起動時間を、一般的なクライアントPCでは30秒以内、休止状態からの再開を20秒以内、サスペンドからの復帰を5秒以内にするという目標を立てて、高速化のためのさまざまなの対策を施している。例えば筆者が手元で使っているマシン(Athlon 600MHz+メモリ384Mbytes、ディスクはIDEが2台のほかにSCSIが1台接続されているので、初期のプローブ時間がIDEのみのマシンに比べてやや長い。詳細は後述)では30秒ではなく、ブート・セクタを読み始めてから「ようこそ画面」が表示されるまで40秒程度かかっていたが、それでも従来のWindows 2000と比べれば高速になっている(Windows 2000 Proだと1分10秒程度であった)。
高速化のために行われた対策としては、例えばデバイス・ドライバの初期化や各種のサービスの起動などをすべて同時並行的に行い(従来は各デバイスやサービスを1つずつ順番に初期化、起動していた)、全体的な待ち時間をなるべく少なくするなどの工夫を行っている。しかし一番効果の大きなものは、プログラムのプリフェッチによるロード時間の短縮であろう。
Windows 9x/Me/2000/XPのような仮想記憶を採用したOSでは、最初にプログラム全体を物理メモリ上に読み込むのではなく、必要に応じて随時ディスクからメモリへとプログラムのコードを読み込みながら実行している。最初にすべて読み込むとすると、非常に大量のメモリが必要になるが、このようなオンデマンドの仮想記憶方式(要求があったページを随時読み込む方式)ならば、少ないメモリ量でも大きな(多数の)プログラムを効率よく実行することができる。だがこれではシステムやプログラムを高速に起動することは難しい。実際にプログラムがページ・フォルト(まだ読み込んでいない部分へのアクセス)を起こして初めてディスクへのアクセスが行われるので、ディスクI/O処理が逐次的な処理になってしまうからだ。
そこで新しく導入されたのがWindows XPの「プリフェッチ」機能である。これはプログラムの動作をトレースして、ディスク上のプログラム・ファイルがどのようにアクセスされるかを調べておき、その結果に基づいてあらかじめディスクから先読みしておくという機能である。これによりページ・フォルトの発生とそれに伴うディスクからの読み出し待ち時間が抑えられ、結果として起動を高速化することができる。最初の1回はトレース・ログのデータが存在しないので起動は速くならないが、2回目以降の実行ではそのログに基づいてディスクが先読みされるので、高速に起動することができる。ディスクへのアクセス・ログは、システムが起動したり、プログラムがロード/実行される場合に自動的に採取される。デフォルトでは、システムの起動直後の2分間や、各アプリケーション起動直後の10秒間などのディスクのアクセス・ログが記録される。
アクセス・ログは各プログラム・ファイルごとに記録され、その結果は%windir%\Prefetchディレクトリに格納される。各ファイルには、それぞれのプログラムごとのディスクへのアクセス・パターンのデータが記録されており、プログラム起動時には、これらのデータに基づいて積極的に先読みすることにより、起動時間を短縮するようになっている。実際には、プログラムを構成するファイルだけでなく、ディレクトリ領域やNTFSのMFT領域(NTFSファイル・システムにおいて、ディスクの管理用として使われる特別な領域)などもプリフェッチの対象となっているので、より高速化の効果が高くなっている。
![]() |
||||||
| ディスク・プリフェッチのログ | ||||||
| プログラムが起動すると、その最初の何秒間かのディスク・アクセスの結果がこのログ・ファイルに記録される。ログ・ファイルはそれぞれのプログラムごとに作成される。例えばNOTEPAD.EXEのログ・ファイルはNOTEPAD.EXE-336351A9.pfなどという名前になる。次回以降はこのファイルの内容に基づいてあらかじめディスク上のデータが先読みされるので、ディスクのI/O待ち時間が短縮され、起動が速くなる。 | ||||||
|
実際にブート・シーケンスにおけるディスク・アクセスなどがどのように高速化されているかを以下に示す。これはWindows XPのブート状況を表示するツール(bootvis.exe。http://www.microsoft.com/hwdev/fastboot/より入手可能)である。ディスクのプローブ(システムに接続されている各種のディスク・ドライブの検出)が終了したあと、プリフェッチ機構が働いてブート・シーケンスで使用するプログラムを最初にいっせいにロードしていることが分かる。
![]() |
||||||||||||||||||||||||||||||
| Windows XP Professionalのブート・シーケンス | ||||||||||||||||||||||||||||||
| BootvisによるWindows XP Professional起動時のCPU/ディスク・アクティビティ・レポート。NT LOADER起動後からの秒数とその後の動作状態が分かる。最初にディスクのプローブ(検出)が14秒あるが、これはディスク・ドライブがあるかどうかをタイム・アウトするまで待つ方法で調査しているので、これ以上高速化できない。ディスクが接続されていないインターフェイスやポートがあるなら、BIOSなどで設定を「なし(NONE)」にしておくと、無駄なプローブ処理が省かれるのでより高速化できる。15秒〜29秒までがプリフェッチ・シーケンス。その後はディスク・アクセスの頻度が少なくなり、CPUがフルに稼働している。最終的には46秒で「ようこそ画面」が表示された。 | ||||||||||||||||||||||||||||||
|
| 特集 |
ホワイトペーパー(TechTargetジャパン)
- 第207話 究極の人事システム (2010/2/9)
部長、わが人事部が開発した究極の人事評価システムがついに完成しました! これで不要な社員が一発で分かります! - WindowsTIPS (2010/2/5)
− netshコマンドでTCP/IPのパラメータを設定する
− Virtual PC 2007の共有NATで利用可能なアドレス範囲
− スタンバイ復帰でパスワード入力を要求されないように - 仮想環境でActive Directoryを利用する (2010/2/4)
仮想環境にADをインストールすれば、自由にActive Directoryドメイン・ネットワークを構築して実験できる - 第206話 バナー広告案 (2010/2/2)
いまどきWebマーケティングが不可欠なのは分かるが、強烈な競合に並べてバナーなんか出して、勝ち目はあるのか?
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | 企業の仮想化に足りない“発想”とは? 仮想化運用管理のキモは意外なところに! New! |
| ◆ | 操作もマニュアルも分かりやすい! ユーザー視点で開発されたPC管理ツール New! |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |

| ◆ | セキュリティを知り尽くす上野氏が登壇! @ITメールソリューションLive! in Tokyo |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
| ◆ | 世界に通用するストレージの作り方とは? 製品に込めた思いを富士通の開発者に聞く |

| ◆ | OSSで手間も時間も、障害も減った―― 「マピオンの事例」オープンソース活用法 |
| ◆ | 「ノートPCの持ち出し禁止」で大丈夫? 情報漏えいを防ぐ管理手法とインフラは? |
| ◆ | 1日の処理を1秒に――MySQLの達人が語る 「コスト削減」できるチューニング |

| ◆ | ドキュメント作成を自動化して、SEの作業 効率を大幅アップ! Visio 2007の魅力 |
| ◆ | 急速に広がるHyper-Vでのサーバ仮想化 そのベストプラクティスをデルが解説 |
| ◆ | @IT主催セミナーで語られた、「担当者に 求められるセキュリティ対策」をレポート |

| ◆ | @IT「Windows 7」 特設サイトオープン! 最新情報・移行ノウハウを公開しています |









