Windows Vistaですんごいメモリを使用してた。原因はWindows Defender

Vistaなんてメモリ1GB以上使用するのが当たり前だよねー、サービス切ったりエアロ切ったりとかで軽くするよね〜。
キャッキャウフフ〜。


ってのはいいとして、何かやたらメモリを消費して、
常駐ソフトとかも殆ど切って、重いソフトも何も起動していないのに、メモリ使用量が倍倍に膨れ上がっていった・・・。


自分の環境は、

【OS】Windows Vista Home Premium Service Pack 2 (32bit)
【CPU】 Core2Duo P8400 (2.26GHz)
【メモリ】 4GB

のノートPC。
32bitなので、3GBちょっとしかメモリ認識しない仕様ですね。


オチだけ先に書きます。
Windows Defenderが悪さをしてました。



まず、いつもPC立ち上げたらCPU温度を見るのに、
「Core Temp」を常駐させています。
CPU温度がわかるフリーソフト

最小化するとタスクバーにCPUコアごとに温度表示してくれる。
普段は2コアとも、30〜48度くらい。
ネトゲすると50度〜。
更にニコニコ生放送とかFMEとか使ったりしだすと70〜80度でウワァァァァってなります。


続いて、
「メモリの掃除屋さん」を常駐させています。
物理メモリや、ページメモリがx%を超えたら、メモリを○%最適化して減らしてくれるってフリーソフト

表示が小さいので普段から最前面に出していて、メモリの使用割合を見ています。
普段は低いときで30%。
通常使用時50%前後?
これまたネトゲとかニコニコ生放送FMEとか起動すると95%くらいに・・・。


で、このメモリの掃除屋さんを起動したら、
物理xx.x / 2048MB
となっていて、え!?メモリ壊れた?
ってのが異変に気づいた発端。
普段からそうだったかな・・・。

しかも、メモリ使用が60%、70%、80%と徐々に増えていく。怖い!


コンピュータの情報からシステムでメモリを見ると、4GBちゃんと認識している。
メモリが壊れたわけではない?


しかしやたらと動作が重い。


確認した手順。

タスクマネージャを起動

立ち上がっているアプリケーションを確認するが変わったことはない。

パフォーマンスからCPU使用率・メモリの使用状況の確認をする。
やはりメモリの使用状況が高い。

プロセス・サービスを確認するが、パッと見てわかる人間ではないので異常は見つけられない。おかしいところはないように映る。

特に異常な数字は見当たらず、メモリ仕様が高いアプリケーションもない。
ウイルスか?と疑う。

ウイルススキャンを開始しながら、
タスクマネージャのパフォーマンスタブにある、リソースモニタを起動し、より詳細を確認する。

ディスクのアクセスが多い!(そりゃウイルススキャンしてるから当然だった)

メモリがやっぱり異常。
物理メモリ使用量がどんどん増えて、60ハードフォルト〜200ハードフォールトくらいを維持して重くなっていく。

ところでハードフォールトって何ですか?と知ったかな感じだったので、ぐぐる

cagylogic - ハード フォールトとページング ファイル サイズ
http://www.cagylogic.com/archives/2009/01/21000100.php

リソース モニタを使うと、現在ディスクにアクセスしているプロセスがわかるんだけど、おかしなプロセスはいない模様。

想像するに、ページング ファイルがフラグメンテーションを起こしているんじゃなかろうかと。

マイコンピュータから右クリックで、システムのプロパティ、パフォーマンスの設定ボタンを押して、パフォーマンス オプションを見ると、仮想メモリが3.5Gになっている。

変更ボタンを押して、ページング ファイルなし を選択。

再起動。

おぉ、すんばらしく快適。

上記ページが見つかり、見たところ参考になりそうだったのでページキャッシュ設定をいじって再起動することにする。
(※ただ、多分無しにすると動作が安定しない恐れを感じたので、256〜1024MBを割り当てるカスタムにした。調べた限りその認識は間違ってはなさそう)

再起動後、落ち着いた!
・・・と思ったら10分、20分して徐々にまたメモリの使用量が上昇。
リソースモニタを再度表示し、ハードフォールトが再度上昇していることを確認。

ハードフォールト≒スワップってこと?
もうちょっと調べる。

まるっぷの日記 - Vistaとの戦い
http://marup1.blog101.fc2.com/blog-entry-51.html

ハードフォールト:スワップの発生した回数。探す情報がメモリ上にない場合HDDに見に行くため、パフォーマンスが落ちる。

だいたいあってた!
しかし、この説明なら操作してない状態から、ブラウザを立ち上げたり、メモリにキャッシュされていない新しいものを色々開いたらハードフォールトは上がる認識でいい気がする。

が、何もしなくてもまた物理メモリの使用率が上昇し、ハードフォールトが上昇していく・・・。
もうウイルスなんじゃないのこれと凄く思う。

リソースモニタのCPU・ディスク・ネットワーク・メモリそれぞれが、各イメージ(サービス、プロセス、アプリケーション)ごとに数値を見れる事にようやく気付く。

svchost.exe(secsvcs)でハードフォールトが異常におきてる事をつきとめる。
これが2000とか異常にハードフォールド値をたたき出して膨らんでいった。

svchostをぐぐるが、よく考えたらそれじゃアタリがつかないと気付く。
secsvcsでぐぐり直す。

svchost.exe -k ほにゃらら …ってナニよ〜?: biac の それさえもおそらくは幸せな日々@nifty
http://bluewatersoft.cocolog-nifty.com/blog/2009/11/svchostexe--k-a.html

たとえば "secsvcs" って何だと思います?
"svchost.exe -k secsvcs" で起動されるサービスは Defender なんですが、 連想できる人はどれだけ居るでしょう。

なるほど、Defenderね・・・。

Windows Vista のサービス一覧
http://pasofaq.jp/windows/admintools/servicelist.htm

Windows Defender
サービス名:WinDefend
状態:開始
スタートアップ:自動
実行ファイルのパス:C:\Windows\system32\svchost.exe -k secsvcs
このサービスが依存するコンポーネント:Remote Procedure Call(RPC)
このサービスに依存しているコンポーネント:なし

望ましくないソフトウェアをコンピュータでスキャンし、スキャンをスケジュールし、最新の望ましくないソフトウェアの定義を取得します。

なるほどね・・・。
これ止めたらまずいのかな。
でも確かにこれならスキャンでディスクアクセスも、ページキャッシュでハードフォールトも上がりそうだ。
そもそもアンチウィルスソフトと、スパイウェア対策してたら止めてもいいんじゃないのこれ?

Windows Vista/7でWindows Defenderを無効化する
http://www.atmarkit.co.jp/fwin2k/win2ktips/1253diswdf/diswdf.html

■ Summary

 ■ Windows Vista/7には標準でスパイウェア対策のWindows Defenderがインストールされている。
 ■ スパイウェアもカバーするウイルス対策ソフトウェアをインストールした場合、Windows Defenderは不要だが、Windows Vista/7ではアンインストールできない。
 ■ このような場合は、コントロール・パネルからWindows Defenderを無効化すればよい。

なんだ、切っていいじゃん・・・。

サービス切ろう!コントロールパネル開く。

おっと、そもそもサービス止めようと思ったら、
コントロールパネルからの項目に、ドンピシャなWindows Defenderがあった。
しかも開いたらまさにスキャン中で、原因確定。
設定を見たら、毎日深夜2時に実行するようになってた。
原因はこいつだったか・・・。
金土日の深夜なんて起きて色々してるから、そんな時間に実行する必要がない。
寝てる時に週1で動けばいいや。

サービス切るより、週1にして様子を見る事にする。
いったん設定を変えて、再起動。
これで再起動してダメならサービスごと止める。

再起動

即タスクマネージャ、リソースモニタを開く。

立ち上がり時は
Skypeやsvchost.exe(NetworkService)がハードフォールトを出してた。
しかし、立ち上がりで色々常駐ソフトを起動する時間だからいいとして…10〜20分後くらいにどうなっているかだな。

約20分監視

変化無しキター(´∀`)原因特定!改善!!



という、いろんな流れを得て、解決した。
すんげー無駄な勉強をした気がする。
最近書いてなかったからネタにはいいかな。

トラブルシューティング能力が低いと自己評価してるので、そういう経験にはなったかもしれない。

同じような人がいたら、
タスクマネージャを開いて、リソースモニタを開いて、ハードフォールト/秒がどう変化してるかとか、それが何が原因か確認して特定した上で調査するといいと思います。

Defenderはメモリをすっげー食う!
しかも倍々に増えていったから超焦る!

同じような人が、探せばきっと何人かいるんだろうな。