タスクマネージャを確認すると、svchost.exeが大量にあって、かなりのメモリーを占有していることがわかった。
どのくらいメモリーを占有しているか、ざっとした合計を出す方法を考える。
私は、職業柄というかDOS窓(コマンドプロンプト)を使って作業することが多い。
tasklist.exeというコマンドがある。
コマンドプロンプトより、tasklist /?
でヘルプを表示してみる。
TASKLIST [/S システム [/U ユーザー名 [/P [パスワード]]]]
[/M [モジュール] | /SVC | /V] [/FI フィルター] [/FO 形式] [/NH]
説明:
ローカルまたはリモートのシステムで実行されている
プロセスの一覧を表示します。
パラメーター一覧:
/S システム 接続するリモート システムを指定します。
/U [ドメイン\]ユーザー コマンドを実行するユーザー コンテキストを
指定します。
/P [パスワード] 提供されたユーザー コンテキストのパスワードを
指定します。省略された場合は、入力を要求します。
/M [モジュール] 指定された EXE/DLL 名を使用しているタスクを
すべて表示します。モジュール名が指定されない場合
は、読み込まれているモジュールすべてを表示します。
/SVC 各プロセスをホストしているサービスを表示します。
/APPS ストア アプリと関連するプロセスを表示します。
/V 詳細なタスク情報を表示します。
/FI フィルター フィルターによって指定された、与えられた条件に一致
するタスクを表示します。
/FO 形式 出力の形式を指定します。
有効な値: "TABLE", "LIST", "CSV"。
/NH 出力するときに、"カラム ヘッダー"を
表示しないように指定します。
"TABLE" と "CSV" 形式でのみ有効です。
/? このヘルプ メッセージを表示します。
フィルター:
フィルター名 有効な演算子 有効な値
----------- --------------- --------------------------
STATUS eq, ne RUNNING | SUSPENDED
NOT RESPONDING | UNKNOWN
IMAGENAM eq, ne イメージ名
PID eq, ne, gt, lt, ge, le PID 値
SESSION eq, ne, gt, lt, ge, le セッション番号
SESSIONNAME eq, ne セッション名
CPUTIME eq, ne, gt, lt, ge, le 次の形式の CPU 時間
hh:mm:ss
hh - 時間、
mm - 分、ss - 秒
MEMUSAGE eq, ne, gt, lt, ge, le メモリ使用 (KB)
USERNAME eq, ne [ドメイン\]ユーザーの形式の
ユーザー名
SERVICES eq, ne サービス名
WINDOWTITLE eq, ne ウィンドウ タイトル
MODULES eq, ne DLL 名
注意: リモート コンピューターを照会するときは、"WINDOWTITLE" フィルターと
"STATUS" フィルターはサポートされません。
Examples:
TASKLIST
TASKLIST /M
TASKLIST /V /FO CSV
TASKLIST /SVC /FO LIST
TASKLIST /APPS /FI "STATUS eq RUNNING"
TASKLIST /M wbem*
TASKLIST /S システム /FO LIST
TASKLIST /S システム /U ドメイン\ユーザー名 /FO CSV /NH
TASKLIST /S システム /U ユーザー名 /P パスワード /FO TABLE /NH
TASKLIST /FI "USERNAME ne NT AUTHORITY\SYSTEM" /FI "STATUS eq running"
なるほど、コマンドの使い方は解った。
svchost.exeだけのリストを表示させようと、ヘルプの通りに、
tasklist /fi "IMAGENAM eq svchost.exe"
と実行するも、
エラー: 検索フィルターが認識されません。
と返ってくる。
どうやらヘルプが間違っているようだ。
IMAGENAMではなく、IMAGENAMEである。
また、大文字である必要もない。
tasklist /fi "imagename eq svchost.exe"
イメージ名 PID セッション名 セッション# メモリ使用量
========================= ======== ================ =========== ============
svchost.exe 440 Services 0 848 K
svchost.exe 632 Services 0 19,148 K
svchost.exe 816 Services 0 54,268 K
svchost.exe 712 Services 0 3,160 K
svchost.exe 1168 Services 0 3,972 K
svchost.exe 1196 Services 0 3,932 K
svchost.exe 1308 Services 0 7,588 K
svchost.exe 1388 Services 0 5,456 K
svchost.exe 1440 Services 0 3,768 K
svchost.exe 1504 Services 0 8,156 K
svchost.exe 1544 Services 0 76,596 K
svchost.exe 1560 Services 0 3,980 K
svchost.exe 1568 Services 0 1,608 K
svchost.exe 1576 Services 0 3,292 K
svchost.exe 1764 Services 0 4,672 K
svchost.exe 1792 Services 0 3,280 K
svchost.exe 1800 Services 0 8,192 K
svchost.exe 1852 Services 0 8,576 K
svchost.exe 1900 Services 0 5,252 K
svchost.exe 2000 Services 0 9,308 K
svchost.exe 2040 Services 0 11,368 K
svchost.exe 2144 Services 0 5,964 K
svchost.exe 2152 Services 0 6,212 K
svchost.exe 2160 Services 0 2,540 K
svchost.exe 2220 Services 0 5,076 K
svchost.exe 2412 Services 0 9,512 K
svchost.exe 2476 Services 0 5,988 K
svchost.exe 2996 Services 0 6,584 K
svchost.exe 3020 Services 0 3,628 K
svchost.exe 2092 Services 0 3,696 K
svchost.exe 3016 Services 0 16,172 K
svchost.exe 3148 Services 0 2,772 K
svchost.exe 3208 Services 0 2,044 K
svchost.exe 3292 Services 0 89,364 K
svchost.exe 3308 Services 0 15,440 K
svchost.exe 3316 Services 0 2,768 K
svchost.exe 3324 Services 0 12,136 K
svchost.exe 3376 Services 0 20,296 K
svchost.exe 3608 Services 0 1,120 K
svchost.exe 3712 Services 0 3,812 K
svchost.exe 3760 Services 0 1,720 K
svchost.exe 3772 Services 0 4,580 K
svchost.exe 3784 Services 0 20,272 K
svchost.exe 3836 Services 0 11,464 K
svchost.exe 4064 Services 0 4,700 K
svchost.exe 4196 Services 0 5,060 K
svchost.exe 4352 Services 0 203,068 K
svchost.exe 4444 Services 0 3,760 K
svchost.exe 5772 Services 0 3,228 K
svchost.exe 5856 Services 0 2,528 K
svchost.exe 2080 Services 0 6,396 K
svchost.exe 2924 Services 0 6,588 K
svchost.exe 3780 Services 0 4,680 K
svchost.exe 4020 Services 0 4,540 K
svchost.exe 4600 Services 0 10,520 K
svchost.exe 6496 Console 1 3,068 K
svchost.exe 6520 Console 1 24,508 K
svchost.exe 6876 Services 0 1,688 K
svchost.exe 6720 Console 1 6,468 K
svchost.exe 7416 Services 0 9,776 K
svchost.exe 8708 Services 0 2,416 K
svchost.exe 10008 Services 0 4,364 K
svchost.exe 10184 Services 0 8,960 K
svchost.exe 6400 Services 0 3,496 K
svchost.exe 3912 Services 0 12,784 K
svchost.exe 6100 Services 0 3,548 K
svchost.exe 7396 Services 0 3,076 K
svchost.exe 7916 Services 0 2,168 K
svchost.exe 8588 Services 0 2,420 K
svchost.exe 16636 Services 0 3,788 K
svchost.exe 1292 Services 0 9,188 K
svchost.exe 15232 Services 0 6,000 K
svchost.exe 14516 Services 0 8,252
一体何個のsvchost.exeが起動しているんだ?
tasklist /fi "imagename eq svchost.exe" > svchost.txt
リダイレクトしたファイルをExcelに打ち込んで、データ→区切り位置で変換してみると、
83個で、870,616KB→約850MBもメモリーを占有していることが解った。
メモリを8GB積んでいるんだが、合計すると10%以上使っている計算になる。
因みに、
/fo csv
でcsv形式にできるが、メモリ使用量が"123,456 K"のようになっているので、Excelにcsvとして取り込むと、Kを取り除く作業をしないとΣ計算できないので面倒です。
CSVを想定しているならば、Kとかの単位は要らないで、正確な値を入れればいいだけなのにね。
タスクマネージャの詳細タブにて、右クリックをして、タスクの終了やタスクツリーの終了をしたいところだが、svchost.exe をやるのはあまりよろしくない。
svchost.exeは、名前は同じでも、やってる中身(サービス)が違うからです。
プロセスタブに移動して、負荷の掛かっているデバイス(CPU、メモリ、ディスク、ネットワーク)を選択して、大きい順に並べ、負荷の高いサービスホストの:以降の文字が何なのか、もしくは、左の>をクリックしてを展開して、中身が何なのかを調べ、そのサービス名をネットで検索して、必要か不要かを判断するべきだろう。
右クリックして、オンライン検索というのもあり、Bingを探しにいくので、それでもいいでしょう。
タスクマネージャのプロセスタブで、名前でソートして、サービスホストの画像を連結してみました。
※表は、名前、CPU、メモリ、ディスク、ネットワークの順番です。
メモリ使用量が多くて困っているとして、サービスホストではIP Helperが204MB使用していることが解るので、IP Helperをネットで検索して、必要か不要かの判断をするということ。
まぁ、すべて自己責任で行うことになるのですがね。
ではでは