Prefetchを無効にする
Windows XP
Windows XPからはWindowsやアプリケーションの起動を高速化するためにPrefetch機能が搭載されています。
Windows XP で新登場の論理プリフェッチャ (Logical Prefetcher) は、シークを最小化する効果的な非同期ディスク I/O で、このデータのほとんどをシステム キャッシュに持ち込みます。起動中、論理プリフェッチャはデバイス初期化遅延と並列に、システムを開始するために必要なディレクトリ I/O のほとんどを完了し、高速起動を提供し、ログオン パフォーマンスを向上します。
- [参考資料]「Windows XP に関するカーネル強化」の高速起動およびアプリケーション起動のための論理プリフェッチャ
- [参考資料]「Windows XP で Prefetcher コンポーネントを無効にする方法」
ただし、このPrefetch機能は一部の環境と相性が悪いようで、Windows起動時にスタートアップに登録されているアプリケーションがエラーを起こして正しく起動できなくなることがあるようです。自ら体験した環境はCeleron/2GHzの自作機でよく起動時エラーを起こしていました。また、Outpostなどシステムにくい込むタイプのアプリケーションでもPrefetchが原因でのエラーが発生する可能性があります。
この場合は、一度再起動するか、それでもエラーになるのであればC:\WINDOWS\Prefetch内のファイルを削除してから再起動することで解消します。ただ、頻繁に起動時にエラーが繰り返して起こるようであれば、Prefetch機能自体を無効化してしまったほうがよいかもしれません。
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters
- EnablePrefetcher=dword:0(初期値:3)
- 0x00000001=アプリケーション起動のプリフェッチ
- 0x00000002=システム起動のプリフェッチ
EnablePrefetcherの値は"and"処理となります。初期値の3はシステム起動・アプリケーション起動ともにプリフェッチが有効です。システム起動時には使わないがアプリケーション起動には使いたいという場合は、EnablePrefetcherの値を1にしましょう。
再起動後から設定した動作となります。ただし、システム起動のプリフェッチを無効にすると、WindowsXPの起動が多少遅くなることにはご注意を。