64GBのRAMを搭載したWindows 11で、プロセスをクラスタリングする前と後の例を示します。アイドル時に一度に処理されるプロセスが224から 126に減った。ほぼ100プロセスの削減です。


以前は、Windowsは多くのシステムサービスを1つのsvchost.exeプロセスにまとめていた。しかし、Windows 10(バージョン1703)からマイクロソフトはこれを変更した。PCのRAMが3.5GBを超える場合、Windowsは各サービスを独立したプロセスに分割する。これは、起動時に検出されたメモリ量に純粋に基づいた判断です。
なぜプロセスを分けるのか?主な理由は、プロセスを分離することで、1つのサービスに障害が発生しても、グループ全体がダウンすることがなくなるからだ。また、可視性の問題でもある。タスクマネージャーで、どのサービスがCPUを消費しているかを(グループ内で調査しなくても)簡単に確認できる。プロセス間の分離はチェインエラーを避けるので、セキュリティの問題でもある。
しかし、人為的に高いしきい値を設定することで、Windowsをだますことができる。Windowsは、"浪費 "するのに十分なRAMがないと考え、サービスをより少ないコンテナに詰め込まざるを得なくなり、プロセスの総数を大幅に減らすことができる。
プロセスをクラスタ化する利点は、 プロセッサのオーバーヘッドの削減など、いくつかある。独立した各プロセスは、CPUに独自のスレッド、優先順位、メモリアクセスを管理させる必要がある。プロセスをグループ化することで、プロセッサの管理負荷が軽減される。
何百もの同じ行がなくてもタスクマネージャーを監視するのはずっと簡単だし、開いている各プロセスが存在するという単純な事実(独自のサポート構造)によって少量のRAMを消費するため、残存メモリを節約できる。それらをグループ化することで、数MBの幻の消費が削られる。
考えられる悪影響は、前述のものだけ である。クラスタ化されたシステムでサービスに障害が発生すると、同じコンテナを共有する他のサービスにも影響が及び、一度に複数の機能が再起動することになる。サービスが分離されていれば、その特定のサービスだけが障害を起こし、他のサービスには影響を与えない。プロセスが分かれていれば、1つのサービスのセキュリティ障害がシステムの他のコンポーネントに影響を与えることが難しくなる。予期せぬエラーが発生した場合は、いつでもクラスタリングを元に戻すことができる。
これはハックでも新しい奇跡のトリックでもない。開発者やシステム管理者を対象としたマイクロソフトのテクニカルポータル「Microsoft Learn」にある、この動作に関するマイクロソフトの公式文書に記載されているものだ。
Windows10とWindows11の両方で動作します。適用するには、管理者としてCMDまたはPowerShellを開き、コマンドを実行して再起動するだけです。
SvcHostSplitThresholdInKBレジスタは、RAMの「しきい値」を設定する。PCのRAMがコマンドで設定された値より多い場合、Windowsはプロセスを分割する。それ以下の場合は、プロセスをグループ化する。そのため、以下の表では、常に現在のRAMより大きな値を持つコマンドを指定している。
(RAMの量が表にない場合は、現在のメモリの2倍(GB)を計算し、式を適用してください:GB量×1024×1024)。
| 現在のRAM | 適用するコマンド(プロセスをグループ化する) |
|---|---|
| 64 GB | reg add "HKLMSYSTEM\CurrentControlSet\Control" /v SvcHostSplitThresholdInKB /t REG_DWORD /d 134217728 /f(128GBのしきい値が適用されます) |
| 32 GB | reg add "HKLMSYSTEM\CurrentControlSet\Control" /v SvcHostSplitThresholdInKB /t REG_DWORD /d 67108864 /f(64GBのしきい値が適用されます) |
| 16 GB | reg add "HKLMSYSTEM\CurrentControlSet\Control" /v SvcHostSplitThresholdInKB /t REG_DWORD /d 33554432 /f(32GBのしきい値が適用されます) |
| 8 GB | reg add "HKLMSYSTEM\CurrentControlSet\Control" /v SvcHostSplitThresholdInKB /t REG_DWORD /d 16777216 /f(16GBのしきい値が適用されます) |
| 4 GB | reg add "HKLMSYSTEM\CurrentControlSet\Control" /v SvcHostSplitThresholdInKB /t REG_DWORD /d 8388608 /f(8GBのしきい値が適用されます) |
これらの変更を工場出荷時の状態に戻すには、この別のコマンドを使い、再起動するだけでよい。
reg delete "HKLM\SYSTEM\CurrentControlSet\Control" /v SvcHostSplitThresholdInKB /f





