起動時のもたつきの正体
Windowsの起動時、デスクトップが表示されてもしばらく操作できない状態が続くことがあります。マウスカーソルは動くのに、クリックしても反応が鈍い。本来SSDは高速なはずなのに、なぜでしょうか。
この「もたつき」の原因として、ユーザープロファイルの読み込みが遅い可能性を検討しました。ユーザープロファイルとは、個人の設定やデータを保存する領域のことです。ここには、デスクトップの壁紙、スタートメニューの配置、ブラウザのブックマーク、そして各種アプリケーションの設定などが含まれます。起動時にこれらすべてを読み込むため、時間がかかります。
ReadyBootエラーへの対処
そこで、イベントビューアーを見ると、気になるエラーがありました。
セッション “ReadyBoot” の最大ファイル サイズに達したためか、イベントがファイル C:\WINDOWS\Prefetch\ReadyBoot\ReadyBoot.etl に書き込まれ時に性能が低下しました。最大ファイル サイズは現在 20971520 バイトに設定されています。
このエラーは、ReadyBootの記録ファイルが約20メガバイトの上限に達したことを示しています。ただし、SSDを使用している場合、このエラー自体はパソコンの動作に大きな影響を与えません。それでも警告が表示され続けるのは気になるものです。
ReadyBoot.etlを削除する
一時的な対処として、記録ファイルを手動で削除する方法があります。
エクスプローラーを開き、アドレスバーに「C:\Windows\Prefetch\ReadyBoot」と入力します。表示されたフォルダ内の.etlファイルを削除し、パソコンを再起動します。Windowsが自動的に新しい記録ファイルを作成します。ただし、この方法は一時的な解決にすぎず、しばらくするとまた同じエラーが発生する可能性があります。
SysMainサービスの無効化の手順
より根本的な解決方法は、SuperFetch(SysMain)を無効化することです。ReadyBootはSuperFetchの一部機能なので、SuperFetchを無効化すれば、ReadyBootも同時に停止します。この方法なら、エラーは二度と発生しません。SSDではReadyBootの恩恵がほとんどないため、無効化しても問題ありません。むしろ、不要なバックグラウンド処理が減り、システム全体のパフォーマンスが向上する可能性があります。
SuperFetch、またはSysMainを無効化する手順は簡単です1。
まず、Windowsキーとキーを同時に押して「ファイル名を指定して実行」を開きます。そこに「services.msc」と入力してEnterキーを押すと、サービス管理ツールが起動します。
サービス一覧が表示されるので、下にスクロールして「SysMain」を探します。古いバージョンのWindowsでは「Superfetch」という名前の場合もあります。
SysMainを見つけたら、右クリックして「プロパティ」を選択します。プロパティ画面が開いたら、まず「サービスの状態」で「停止」ボタンをクリックします。次に「スタートアップの種類」のドロップダウンメニューから「無効」を選択します。最後に「適用」ボタンをクリックしてから「OK」ボタンを押します。
設定を完全に適用するため、パソコンを再起動します。
SuperFetchという古い仕組み
Windowsには、SuperFetchという機能が搭載されています。Windows 10以降ではSysMainという名前に変わりましたが、基本的な役割は同じです。この機能は、よく使うプログラムをあらかじめメモリに読み込んでおくことで、アプリケーションの起動を速くします。
SuperFetchの動作は次のようになります。まず、Windowsが使用パターンを学習します。どのアプリをよく使うか、どの時間帯に何を起動するかを記録します。次に、起動時にそれらのファイルを予測して読み込みます。そしてアプリケーション起動時には、ディスクではなくメモリから読み込むため、速く起動できるという仕組みです。
これは一見便利に思えます。しかし、この仕組みはHDDという古いタイプのストレージを前提に設計されたものです。
関連する起動高速化機能との関係
SuperFetch(SysMain)について理解を深めるには、Windowsの他の起動高速化機能との関係を知っておくと役立ちます。特に、ReadyBootと高速スタートアップという2つの機能が混同されがちです。
SysMain(親機能)
├── ReadyBoot(起動最適化)
├── ReadyRun(アプリ最適化)
└── その他の最適化機能
高速スタートアップ(別系統)
└── ハイバネーションファイルを使った高速起動
ReadyBootは、実はSuperFetchの一部機能です。SuperFetchには複数の最適化機能が含まれており、ReadyBootはその中の起動プロセスに特化した部分を担当します。起動時にどのファイルが読み込まれたかを記録し、次回起動時にその記録を基に先読みする仕組みです。つまり、SuperFetchを無効化すると、ReadyBootも同時に無効化されます。
一方、高速スタートアップは全く別の仕組みです。シャットダウン時にシステムの状態をファイルに保存し、次回起動時にその保存状態から復帰します。完全な起動ではなく、休止状態からの復帰に近い動作です。ReadyBootやSuperFetchとは独立して動作します。
SSDを使用している場合、これら3つの機能の関係が興味深い状況を生み出します。高速スタートアップが有効だと、保存された状態から復帰するため、ReadyBootが先読みする機会がほとんどありません。それでもSuperFetchはバックグラウンドで動き続け、リソースを消費します。
さらに、高速スタートアップ自体も、SSDでは効果が限定的です。SSDの起動速度は既に速いため、通常起動と高速スタートアップの差は数秒程度にすぎません。むしろ、高速スタートアップは完全なシャットダウンではないため、時々トラブルの原因になることがあります。
SSD搭載パソコンでの推奨設定は、使用状況によって異なります。シンプルさを重視するなら、SysMainを無効化し、高速スタートアップは有効のままにします。高速スタートアップだけで十分な速度が得られます。安定性を重視するなら、両方とも無効化する選択肢もあります。SSDなら通常起動でも十分速く、完全シャットダウンの方がシステムの安定性が高まります。
HDDとSSDの根本的な違い
HDDは物理的な円盤が回転し、読み取りヘッドが移動してデータを読み書きします。図書館で本を探すようなものです。本棚のあちこちから本を取り出すには時間がかかります。特に、離れた場所にある複数の本を次々と取り出す作業、つまりランダムアクセスは非常に遅くなります。
一方、SSDには物理的な動きがありません。電気信号だけでデータを読み書きします。どこにあるデータでも、ほぼ同じ速さでアクセスできます。
- HDDのデータ読み込み速度は、一般的に毎秒80メガバイトから160メガバイト程度です2。
1ギガバイトのデータをランダムに読み込む場合、30秒から60秒ほどかかることもあります。 - SSDの読み込み速度は、SATA接続で毎秒500メガバイト程度、NVMe接続なら毎秒3,000メガバイトから7,000メガバイトにも達します3。HDDの10倍から50倍の速さです。
同じ1ギガバイトのランダムデータを読み込むのに、わずか1秒から2秒しかかかりません。
なぜSSDでSuperFetchが不要なのか
SuperFetchの目的は、HDDの遅いランダムアクセスを回避することでした4。先読みしてメモリに置いておけば、HDDにアクセスせずに済みます。HDDでは、SuperFetchなしで30秒かかる処理が、SuperFetchありなら5秒から10秒で終わります。大きな効果です。
しかしSSDでは話が違います。SSD自体が既に十分速いため、先読みの恩恵がほとんどありません。SuperFetchなしでも1秒から2秒で終わる処理が、SuperFetchありでも同じく1秒から2秒です。効果はほぼゼロです。
それどころか、SuperFetchが動くことで余計なリソースを消費します。バックグラウンドでデータ使用パターンを分析し、先読みするファイルを決定し、実際に読み込む。これらすべてにCPUとメモリが使われます。特にメモリが8ギガバイト以下のパソコンでは、この消費が無視できません。
起動時には、SuperFetchが動作することでディスクアクセスが増え、他のプロセスの読み込みを遅らせることもあります。ユーザープロファイルの読み込みが遅くなる原因の一つです。
Windows 10以降の変化
実は、Windows 10以降のSysMainは、SSDを検出すると動作を自動的に抑制する仕組みになっています5。完全には動作を止めませんが、HDDの時ほど積極的には働きません。
それでも完全には停止しないため、手動で無効化するとさらにすっきりします。起動時のメモリ使用量が減り、バックグラウンドプロセスが一つ減り、ユーザープロファイルの読み込みが速くなる可能性があります。
あわせて実施すべき対策
SuperFetchの無効化と合わせて、一時ファイルの削除も効果的です。ユーザープロファイルには、アプリケーションが作成した一時ファイルが蓄積されています。これらが多すぎると、起動時の読み込みに時間がかかります。
一時ファイルを削除するには、Windowsキーとキーを押して「temp」と入力し、Enterキーを押します。開いたフォルダ内のファイルをすべて選択して削除します。削除できないファイルがあれば、スキップして構いません。
次に、同じくWindowsキーとキーを押して「%temp%」と入力し、Enterキーを押します。これも同様に、フォルダ内のファイルをすべて選択して削除します。
この2つのフォルダは異なる場所を指しており、それぞれ異なる一時ファイルを保存しています。両方を削除することで、より多くの不要なファイルを取り除けます。
効果の確認
無効化と一時ファイル削除の後、パソコンを再起動して効果を確認します。起動時にデスクトップが表示されてから、実際に操作できるようになるまでの時間を測ってみてください。多くの場合、数秒から十数秒の改善が見られます。
もし元に戻したくなった場合は、同じ手順でサービス管理ツールを開き、SysMainのスタートアップの種類を「自動」に変更して「開始」ボタンをクリックすれば、元の状態に戻ります。
- SuperFetchはWindows 10の1809アップデート以降、SysMainという名前に変更されました。Windows 8以降のバージョンでは、SSDを検出すると動作を自動的に抑制する仕組みが組み込まれていますが、完全には停止しません。手動で無効化することで、さらにリソース消費を削減できます。- What Is Superfetch (SysMain) on Windows 10? And How to Disable It
- 7,200 RPMのHDDの読み書き速度は約90〜160MB/s、5,400 RPMのHDDではさらに遅く30〜80MB/s程度です。物理的な回転速度が性能の上限を決定します。- SSD vs HDD Speed: Which Is Faster? – SSD vs HDD – Comparing Speed, Lifespan, Reliability
- SATA接続のSSDは500〜600MB/s、NVMe SSDは3,000〜7,000MB/sの読み書き速度を実現します。最新のNVMe Gen4規格では7,000MB/s以上の速度も可能です。- SSD vs HDD: Speed, Capacity, and Performance Compared | HP – HDD vs External SSD – Kingston Technology
- SuperFetchは、頻繁に使用するアプリケーションをメモリに先読みすることで、HDDの物理的な読み取り遅延(シークタイムとレイテンシ)を補う目的で設計されました。HDDでは30〜50%の起動時間短縮効果がありますが、SSDでは効果がほとんどありません。- How to Configure SuperFetch (SysMain) in Windows
- Windows 8以降、SuperFetch(SysMain)はSSDの存在を検出し、動作を調整する機能が実装されています。ただし完全には停止せず、バックグラウンドで一定のリソースを消費し続けます。- Enable or Disable SysMain (Superfetch) & Prefetch for SSD in Windows – UMA Technology – Disable SysMain (Superfetch) & Prefetch for SSD in Windows 11