こんにちは、masaです。

今回は先日のWindowsの動作が遅い原因を調べる方法の続編です。
Windowsが遅くてイライラする時に、何がWindowswを遅くしているのか、調査する方法について、書いてみます。

svchost.exeとはなんぞや

タスクマネージャーを表示し、左下にある「Show processes from all users」ボタンを押すと、自分が明示的に動かしているプログラム以外にWindowsが実行しているプログラムの一覧が表示されるようになります。

svchostがプロセスを占有
svchostがプロセスを占有

困るのはこういうケースです。
例えば、Firefoxなど、CPUやメモリを占有している具体的なソフトが分かれば、それを停止すればよい話なのですが、この画面のケースでは svchost.exe というプログラムが CPUを25%、メモリを1.16GBも占有しています。
私のパソコンは、4GB搭載しておりますが、その1/4以上を占有していることになります。
この svchost.exe は Description(概要)に、Host Process for Windows Services と書いてあり、どうもWindowsのOSのプロセスの一部であることは間違いなさそうです。

これだけパソコンを占有されてしまうこと事態が大変ゆゆしき事態なのですが、この scvhost.exe の正体がわからないので、止めてしまって大丈夫なものなのか、イマイチ不安になります。(ウイルスなのか?と疑ってしまいますよね。)

20150814_taskmanager4

このようにプログラムの名称でソートすると svchost.exe が大変たくさん出てきます。
svchost.exe 自体は Windowsの「サービス」というネットワークや印刷のコントロールなど、裏で動いているプログラムを一括管理するプログラムなので、複数が同時に起動していてもおかしくないわけなのですが、正直言ってあまり気持ちいいものではないですね。

Microsoftのサイトによると、svchost.exe とは – Windows ヘルプ svchost.exe プロセスを右クリックして[サービスの表示] [Go to Service(s)]を選択すると、そのscvhost.exe と関連付けられているサービスが表示される、というのですが、なかなかこれを見ても、何がなんだか、というのが正直なところだと思います。

Process Explorerを使ってみる

こういうケースの調査をするときに非常に役に立つツールが、Process Explorerです。
タスクマネージャーの上位版という感じで、各プログラムの親子関係などをツリー構造で表現してくれます。
タスクマネージャーではそれぞれのプログラムの親子関係は知ることができないので、表示されているプログラムが単独のプロセスなのか、それともなにか親のプログラムがあって、動いているものなのか、ということがはっきりします。
Process Explorer のダウンロードはこちらから

画面はこのような感じです。
20150814_taskmanager5

ちなみに、前回私が襲われた大変遅い状況をこのProcess Explorerで確認したところ、

20150812_windowsupdate

Windows Update が原因であることが判明しました。
私が作業している後ろで、アップデートをダウンロードしていたんでしょうね。
アップデートしなければいけないのは分かるのですが、作業中は少し遠慮して欲しいものです。