こんにちは、阿久津です。Creators Updateの名前で2017年4月12日からリリースが始まったWindows 10 バージョン1703は、4GB以上の物理メモリーを搭載したPCで、Svchost(Windowsサービスのホストプロセス)のプロセスを分離する機能が加わりました。詳しくは「Windows 10大百科」をご覧いただくとして、OSの安定性向上は歓迎すべきことです。ただ、メモリー増設が難しい2in1 PCなどは、アプリケーションの動作に悪影響を及ぼす可能性も排除できません。
本機能が有効になるか否かは、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ControlキーのDWORD値「SvcHostSplitThresholdInKB」で定められています。今回は、物理メモリーを4GBしか搭載していないPCを対象に、Svchostのプロセス分離を行うしきい値(メモリー容量)を8GB以上に変更するチューニングをご紹介しましょう。
1. 管理者権限でレジストリエディターを起動します。 2. レジストリエディターが起動したら、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Controlキーを開きます。 3. DWORD値「SvcHostSplitThresholdInKB」のデータを10進数で「8388608」に変更します。 4. <×>ボタンをクリックして、レジストリエディターを終了します。 5. Windows 10を再起動します。 |
---|
これで操作が完了しました(図01~05)。
図03 DWORD値「SvcHostSplitThresholdInKB」をダブルクリックし、<10進数>をクリックします。続いてデータを「8388608」に変更して<OK>ボタンをクリックしてください |
それでは結果を確認しましょう。[Ctrl]+[Shift]+[ESC]キーを押して「タスクマネージャー」を起動します。<プロセス>タブの一覧から任意のサービスホストをクリックして展開してください。チューニング前は各サービスが個別に起動していましたが、チューニング後は複数のサービスが1つのプロセス下で動作していることが確認できます(図06~07)。
Windowsは多目的な機能を実現するため「サービス」という形で、多くのプログラムをバックグラウンドで実行してきました。例えば、Windows Updateは「C:\Windows\system32\svchost.exe -k netsvcs」をトリガーを使って起動しています(図08)。
Windows 10バージョン1607までは、複数のサービスを1つのSvchostで管理(起動)することで、消費メモリーを節約してきました。しかし、複数のサービスを制御することで、CPU負荷が高まるなどの弊害を招いていたのも事実です。また、1つのサービスが意図せずハングアップした場合、Svchostを巻き込んでOS全体をクラッシュさせてしまうこともありました。そのためMicrosoftは、メモリーの消費よりも安定性を優先するため、今回の変更を加えたのでしょう。
具体的には、DWORD値「SvcHostSplitThresholdInKB」のデータである「3670016(10進数)」がポイントです。この数値はKB単位のため、約3.67GB以上のメモリーを搭載するPCではプロセス分離を実行しますが、この数値を8GBとなる「8388608(8,192×1,024)」に変更して機能を抑止させました。例えばデスクトップPCに本チューニングを適用し、メモリーの増設からプロセス分離機能のしきい値を4GBに変更する場合は、ステップ03の数値を「380000(16進数)」に戻してください。
それでは、また次号でお目にかかりましょう。
阿久津良和(Cactus)