Windows 10 バージョン1703(Creators Update)では、「svchost.exe」プロセス(Windowsサービスのホストプロセス)によるサービスのホストの仕様に大きな変更が加わりました。
svchost.exeプロセスは、Windowsサービスのダイナミックリンクライブラリ(DLL)をホストするサービスであり、「サービスグループ」という単位で1つのsvchost.exeプロセスが複数のサービスをホストすることがよくあります。
Windows 10 バージョン1703以降を利用中なら、でタスクマネージャーを開いてみてください。大部分のサービス(例外もあり)が、それぞれ1つのSvchost.exeプロセスでホストされているのを目にすることができるかもしれません(画面5)。そうではなく、従来と同じように1つのSvchost.exeプロセスで複数のサービスがホストされているかもしれません(画面6)。あなたのPCはどちらでしょうか。
1つのSvchost.exeプロセスで1つのサービスがホストされている状況では、大量のsvchost.exeプロセスが動作するため、異常事態のように見えるかもしれません。自分のPCが暴走している、あるいはマルウェアに感染しているのでは? と不安に感じることもあるかもしれません。でも安心してください。どちらも正常です。
これは、Windows 10 バージョン1703以降(サーババージョンは除く)の新しい仕様です。上記の画面5と画面6の違いは、PCに搭載されている物理メモリ容量の違いからくるものです。メモリがあるサイズ以下であれば従来通り、1つのsvchost.exeプロセスで複数のサービスをホストします。メモリがあるサイズより大きい場合、一部のサービスを除いて、1つのsvchost.exeプロセスが1つのサービスだけを専門的にホストします。その境になるのは3.5GBです。3.5GBより多いメモリを搭載している場合、新しい仕様が適用されます。
Windows 10 バージョン1703を実行する仮想マシンでメモリサイズを変えて比較してみました。メモリが3.5GB以下(3.5GBを含む)の場合、svchost.exeプロセスの数は「18」でした。同じ仮想マシンのメモリを3.5GBより大きくすると、svchost.exeプロセスの数は「69」にまで増えました(画面7)。この実験の様子は、筆者の個人ブログをご覧ください。
この新しいホスト方法の仕様には、サービスごとにホストプロセスを分割することでサービス間を分離し、セキュリティや安定性を向上しようという目的があります。しかし、いくら十分にメモリがあったとしても、プロセスごとにメモリ割り当て(ワーキングセット)があるわけですから、svchost.exeプロセスの増殖はメモリ使用の増加に直結します。
メモリ圧縮は、その状況を改善する方法の1つです。Windows 10 バージョン1703以降はメモリ圧縮に加えて、svchost.exeプロセスが「ページ統合(Page Combining)」の対象になりました。ページ統合機能はWindows 8から搭載されたメモリの使用効率を向上する機能で、すごく簡単に言ってしまえば“メモリの重複排除機能”です。
メモリ圧縮、svchost.exeプロセス、ページ統合など、Windowsの内部的な動きは、エンドユーザーは知る必要のないことではありますが、タスクマネージャーなどエンドユーザーに見えてしまう部分もあり、それが謎やいらぬ誤解を生むこともあります。これまでのWindowsの仕組みを知っている人にとっても、新しい仕様には戸惑うことがあるでしょう。最近は、新しい仕様を説明するドキュメントがかなり遅れて公開されることもあるので、なおさらです。
岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(Oct 2008 - Sep 2016)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows Server 2016テクノロジ入門−完全版』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.