💡

【WindowsPC初期設定】Sysmainと高速スタートアップ無効化の備忘録

に公開

ハードウェアの故障やシステムトラブルが発生していないにもかかわらず、Windows PCの動作が遅い場合、PCの設定内容に問題がある可能性があります。

私が見てきた中で処理速度が遅いパソコンは基本的にHDD故障(8割くらいは寿命)でしたが、タイトルの設定によるものがごく稀にありました。

通常、企業がパソコンを大量に導入する際には、上記の設定を無効にして運用するのが一般的です。しかし、大量展開のノウハウを持たない業者から購入したり、個人で購入して初期設定のまま使用していたりすると、設定が無効化されておらず、問題が発生するケースも見られます。

Sysmainとは

SysMain(旧称:Superfetch)は、Windowsに搭載されているパフォーマンス改善機能の一つで、以下のような役割を果たしています。

  • 使用頻度の高いアプリやファイルを学習し、事前にメモリに読み込んで起動を高速化する。
  • ユーザーの操作パターンを分析し、最適なタイミングで先読みしてシステム全体の反応を速くする。
  • 空きメモリを無駄にせず、将来使いそうなデータを積極的に読み込んで効率化を図る。

ただし、この機能はHDDを搭載した古い時代のPCのためにあるもので、場合によっては動作不良を起こす可能性があります。具体的にはCPUやメモリの使用率が増加(ディスク使用率100%近くになる)して、溜まりすぎた学習データのキャッシュがソフトの起動を妨げます。

技術的解説

SysMainに関する用語をここでまとめて確認しましょう。

  1. プリフェッチ
    • Windows起動直後のアプリの起動を速くするために、よく使われるプログラムの実行ファイルやライブラリ(DLL)を事前にメモリに読み込んでおく機能です
    • Superfetchの旧称から分かるように、Sysmainはプリフェッチの発展版みたいな存在です
    • Sysmainは単純な起動時プリフェッチだけでなく、常時学習して先読み&読み込みを行います
  2. スワップアウト
    • スワップアウトは、メモリ上にあるデータをストレージ(HDD/SSD)に一時退避させることです
    • 主にメモリが不足してきたとき、あまり使われていないデータをストレージに出して、空きメモリを確保するために行われます
    • スワップアウトされたデータは、また必要になったときにスワップインされて戻ってきます
  3. スワップイン
    • スワップインは、ストレージに退避されていたメモリのデータを、再びRAMに読み込むことです
    • スワップインが発生すると、ストレージから読み込むため、アクセス速度が遅くなり処理が一時停止することがあります
    • スワップインの頻度が高すぎると、PC全体がカクついたり重くなったりします(スラッシング)

Sysmainはスワップイン・スワップアウトを直接操作するものではありませんが、下記のような状況により間接的に作用します。

SysMainがメモリを大量使用
 ↓
空きが足りなくなる
 ↓
不要なページだけでなく必要なページもスワップアウト
 ↓
後で必要になりスワップイン

つまり、Sysmainが動作していてPCの動作が遅くなるのはスワップイン・スワップアウトが過剰に起こってしまうことによるものです。

Sysmainを無効化する

[win]+[R]で出てきた画面に「services.msc」を入力。

サービスを開きます。

名前順に並んでるので「Sysmain」の項目を探します。
どれか一項目選択してキーボード「s」を押すと一気に近くまで飛べるので楽です。

「スタートアップを無効」、「サービスの状態を停止」にします。
これで設定完了です。

高速スタートアップ

通常のシャットダウンとは異なり、カーネルやドライバ情報などをメモリ上の状態ごと「ハイバーネーション(休止状態)ファイル」に保存しておき、次回起動時にこれを読み込むことで、起動を速く見せる機能です。

有効にしてると起動時にエラーが発生して起動しなくなったり、OSアップデートで整合性が取れなくなって、むしろ起動に時間がかかってしまうことがあります。

技術的解説

高速スタートアップと通常シャットダウンを比較すると以下のようなフローになります。

[通常シャットダウン]
  ↓
Kernel終了 + User終了 → 電源オフ

[高速スタートアップ]
  ↓
Kernel保存(hiberfil.sys) + User終了 → 電源オフ
  ↓
次回起動 → hiberfil.sys復元 → 起動高速化

hiberfil.sysはC:\直下にある隠しファイルに存在しています。カーネルメモリやドライバスタックをダンプ保存しておき、次回起動時にそれを読み込んで起動を高速化します。つまり、高速スタートアップとは、シャットダウンと休止状態(Hibernate)のハイブリッド動作になります。

「高速スタートアップの使用を要求する」を無効化する

コントロールパネル→電源オプション(電源ボタンの動作の変更)で設定画面に向かうことができます。

これだけで設定は完了します。

しかし、今後UIが変わることもあるかもしれませんので、別の方法も掲載しておきます。
(私は既に私用でWindowsを使わなくなっているので、UI変更にとても鈍いです...)


グループポリシーでの設定の場合

[win]+[R]で出てきた画面に「gpedit.msc」を入力。

グループポリシーを開いたら、下記の場所に行く
[コンピューターの構成]-[管理用テンプレート]-[システム]-[シャットダウン]

項目をダブルクリックして、中にある設定値を無効にする。
これで設定は完了します。

レジストリエディターでの設定の場合

[win]+[R]で出てきた画面に「regedit」を入力。

\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Powerを開く。

HiberbootEnabledという項目があるので、ダブルクリックして中を開きます。
値のデータを「0」にして無効にします。

設定が終わったらOKで閉じます。
これで完了です。


上記の作業は大量展開時はバッチで行うのが普通です。(それも紹介できたら良いのですが、私がすっかりWindows機を使わなくなっているので...もし、紹介できる機会があったら、追記しておきます。)

それでは、お読みいただきありがとうございました。

Discussion