Antimalware Service Executable のCPU使用率が高い時の対処
簡潔な回答: Antimalware Service Executable(MsMpEng.exe)はWindows Defenderのリアルタイム保護で、アイドル時はCPU 1〜5%程度のはずです。高い使用率が続くなら、ほぼ必ずスキャンが詰まっているか、2つ目のウイルス対策と競合しているか、Defenderが絶えず変化する巨大なフォルダーを何度も再スキャンしているかのいずれかです。Set-MpPreference -ScanAvgCPULoadFactor でスキャンを制限し、予定スキャンをアイドル時間に移し、頻繁に書き換わる同期・ビルドフォルダーを除外してください。Defenderは無効化しないこと。
Antimalware Service Executable は、Windows Defender のリアルタイム保護プロセス、MsMpEng.exe です。アイドル時はおよそ1〜5パーセントのはずです。これが上がったまま下がらない時は、ほぼ必ず次の3つのどれかです。スキャンが詰まった、Defender が2つ目のウイルス対策とぶつかっている、または巨大なフォルダーを何度もすり潰している。この順で当たってください。
「この順で」と言うのは、人はいきなり最終手段——リアルタイム保護を切ること——に飛びつくからで、それは最悪の対処である上に、本当の原因であることはめったにありません。スキャンは一時的なものであるべきです。予定スキャン中に MsMpEng が10分ほど40パーセントまで上がって、その後下がるなら、何も問題ありません。あなたが追うのは、下がってこない方です。
これは本当に問題か?
何かを変える前に時計を見てください。今、更新を入れたばかりですか。予定スキャンが走る時刻ですか。ならCPUの上昇はプロセスが仕事をしているだけで、いずれ収まります。AV-Comparatives は毎年パフォーマンステストを行っていて、Defender のリアルタイム保護は日常の作業——ファイルのコピー、アプリの起動、ブラウジング——でほとんど針を動かしません。保護は、健全なマシンを遅くする原因ではないのです。だからあなたが気にすべきは狭い範囲です。メールを読んでいるだけなのに50パーセントに張りついている、あるいはスキャンが終わるはずの時刻から15分経ってもまだすり潰している。それが本物です。
人がつまずく点が一つ。表示される数字は共有されています。4コアのノートPCで MsMpEng が合計25パーセントと出ていても、1コアを完全に飽和させ、ほかは遊んでいる、ということがあり得ます。タスクマネージャーをCPU列で並べ替え、更新速度を「低」にして1分ほど見てください。1秒の瞬間的な跳ねで誤った犯人を追いかけずに済みます。

何で詰まっているか突き止める
設定を変え始める前に、Defender が実際に何に取り組んでいるかを突き止めてください。対処はその答え次第だからです。
Windowsセキュリティを開き、ウイルスと脅威の防止に進み、保護の履歴を見ます。探すのは、始まったのに終了を報告しないスキャンです。詰まっているフォルダーはもっと奥、イベントビューアーにあります。アプリケーションとサービス ログ、次に Microsoft、Windows、Windows Defender、Operational。直近の数時間をスクロールしてください。開始だけあって対応する完了がないスキャンのイベント、それが答えです。
十中八九、犯人は絶えず変化するファイルでいっぱいの、たった一つの巨大なディレクトリです。途中のtorrentが入ったダウンロードフォルダー。仮想マシンのディスクイメージのフォルダー。Steamライブラリ。10万個の小さなファイルを抱えた開発者の node_modules ツリー。Defender は中で何かが変わるたびに再スキャンし、何かが絶えず変えていれば、止まりません。
知っておくべき2つ目のパターンがあります。高い使用率が連続的にではなく毎日同じ時刻に現れるなら、それは詰まっているのではなく、あなたがマシンを使っている最中に予定スキャンが落ちてきているのです。これは本当に行き詰まったスキャンとはまったく別の対処になります。
本当の原因で直す
私が手をつける順で並べます。多くのガイドの順とは違います。多くは危険なものから始めるからです。
スキャンが使ってよいCPUに上限をかける。 これはほとんど誰も触れない設定で、スキャンが問題のときに最もきれいな対処です。PowerShell を管理者として開き、Set-MpPreference -ScanAvgCPULoadFactor 30 を実行します。これで Defender は、既定の50ではなく平均30パーセントのCPUにスキャンを抑えます。値は5から100まで指定でき、Microsoft自身のドキュメントに従っています。ついでに、Set-MpPreference -EnableLowCpuPriority $true は予定スキャンを低優先度にし、あなたの作業に道を譲らせます。あとで Get-MpPreference | Select ScanAvgCPULoadFactor, EnableLowCpuPriority を実行して反映を確認してください。これは保護をまったく弱めません。スキャンがマシンを食い尽くすのを止めるだけです。

予定スキャンを、誰もPCを使っていない時刻に移す。 あなたの高CPUが毎日同じ時刻型なら、これです。タスクスケジューラを開き、タスクスケジューラ ライブラリ、Microsoft、Windows、Windows Defender と展開し、Windows Defender Scheduled Scan を開きます。「条件」タブでPCがアイドルの時だけ開始するよう指定でき、「トリガー」で真夜中に移せます。既定のスケジュールは、マシンが目覚めた瞬間に走り出す癖があります——まさにあなたが使いたい時にです。
絶えず書き換わるフォルダーを除外する——Defender自身ではなく。 ここで最悪なのはクラウド同期フォルダーです。OneDrive、Google Drive、Dropbox は一日中ファイルをダウンロードし書き換え、書き込みのたびに再スキャンが走るからです。Windowsセキュリティ、ウイルスと脅威の防止、設定の管理、除外、で、騒ぎの元になっている具体的な同期フォルダーやビルド出力ディレクトリを追加します。ここは正確に。Cドライブ全体を除外すると Defender を入れている意味がなくなり、MsMpEng.exe を自身から除外しても——いくつかのガイドが勧めますが——無意味です。除外リストはスキャンされる対象のためのもので、スキャナーのためではないからです。
ウイルス対策エンジンを2つ動かしていないか確認する。 2つのリアルタイムスキャナーは結局たがいをスキャンし合い、ループになり、マシン全体がその代償を払います。思っているより多く起きます。理由は、古いウイルス対策ソフトはまずきれいにアンインストールされないからです——Norton、McAfee、Avast、どれも起動時に読み込まれ続ける残骸を残します。「プログラムの追加と削除」から消すだけでは足りません。各社は専用の削除ツールを出しています。それを取ってきて、実行し、再起動してください。
Defender が自分で作り出すループのバリエーションもあります。自身の検疫とキャッシュをスキャンする。新しい定義更新を落とし続けている、まさにそのダウンロードフォルダーをスキャンする。ぐるぐる回り、外から見ると暴走プロセスのように見えます。あふれたダウンロードフォルダーを空にしたら、設定を一つも触らずに問題が消えたことがあります。
CPUではなくメモリの場合
ここに来る人の多くは、MsMpEng がCPUではなくRAMを食っているからで、両者は「正常」のしきい値が違います。数百メガバイトなら問題ありません。ファイルを素早く確認できるよう、エンジンと定義がメモリに乗っているのです。気にすべきはギガバイト単位まで膨れて居座る時だけです。
メモリが高いのは、ほぼ必ず Defender が大きなものを読み込み、作業中それを保持しているからです。数ギガの圧縮ファイルや仮想マシンのディスクイメージのフォルダーに当たると、その一部をRAMに引き込み、数字はかじっている対象の大きさに従って上がります。だから対処はCPUと同じです。除外が、それらの巨大ファイルを何度も読み込ませなくします。アイドル時間にスケジュールするのも効きます。メモリはスキャンが終わった瞬間に戻ります。
私がやらないのは、実害のないメモリの数字を追いかけることです。MsMpEng がスキャン中に1ギガ使っていても、マシンに16あって快適なら、放っておきましょう。それは使えるメモリがそこにあるから使っているだけで、メモリとはそのためのものです。問題なのは、何もスキャンしていないのに上がり続けて決して解放されないRAMで、いまやもたつき、ページングしているマシンの場合です。それは別の診断であり、Defender単独のせいであることはまれです。
「とにかくDefenderを切る」が答えでない理由
リアルタイム保護を無効にすれば、数字は確かに下がります。同時に、マシンを見張るものが何もなくなり、現在のWindowsではどのみち再起動後に再び有効になります——あなたがやるべきでないところまで踏み込まない限り。対処の正しい形は、スキャンを抑え、予定を組み直し、騒がしいフォルダーを除外することです。保護を保ったまま、遅さを失います。特定の作業のためにどうしても切る必要があるなら、ただスイッチを切り替えるのではなく、改ざん防止を絡めた正しい手順があります。
それらをすべてやっても MsMpEng が張りついたままで、スキャンも走っておらず、2つ目のウイルス対策も入っていないなら、病気そのものではなく症状として扱ってください。Defender の名を名乗りながら System32 ではなく一時フォルダーに住むプロセスは偽装したマルウェアで、本物がここまで詰まるのは、壊れた定義やその下で壊れかけているディスクを指していることがあります。上の設定を越えると、イベントビューアーのログとプロセス単位の追跡の領域です——手で梳くのに数時間かかる類いの作業で、誰かにリモートで見てもらう方が、もう一度試行錯誤の午後を過ごすより早く片づくことが多いものです。
よくある質問
Antimalware Service Executable がこれほどCPUを使うのは正常ですか?
アイドル時、MsMpEng.exe はCPU 1〜5%程度のはずです。予定スキャン中や更新直後の短時間の上昇は正常で、自然に収まります。正常でないのは、軽い作業中に高い使用率が続くこと、またはスキャンが終わるべき時刻の15分後もまだ動いていることです。AV-Comparativesの独立した試験では、Defenderのリアルタイム保護は日常作業にほとんど影響しないと示されています。だから健全なマシンがDefenderのせいで遅くなることはなく、持続的な高CPUは何かが詰まっている合図であり、プロセスが懸命に働いている証ではありません。
Antimalware Service Executable を恒久的に安全に無効化できますか?
リアルタイム保護をオフにすることはできますが、それは誤った対処であり、PCを無防備にします。現在のWindowsでは改ざん防止機能が再起動後に再び有効化します。先にそれを無効にしない限り戻りますが、それは軽々しくやるべきではありません。安全な方法は、Set-MpPreference -ScanAvgCPULoadFactor でスキャンのCPUを抑え、スキャンをアイドル時間に再設定し、絶えず再スキャンを誘発するフォルダーを除外することです。これで保護を保ったまま遅さを取り除けます。
Antimalware Service Executable がメモリ(RAM)をそんなに使うのはなぜですか?
数百メガバイトは正常です。ファイルを素早く確認できるよう、エンジンと読み込んだ定義がメモリに乗っている状態です。問題になるのはギガバイト単位まで膨らんで居座る時で、たいていDefenderが大きなもの(数ギガの圧縮ファイルや仮想マシンのディスクイメージ)をスキャンしてメモリに保持している場合です。高CPUを直すのと同じフォルダー除外がこれも直します。巨大なファイルを何度も読み込ませなくなるからです。スキャンが動いていないのに解放されないRAMは別の問題で、Defender単独のせいであることはまれです。
スキャンを実行していないのに高いCPUを使うのはなぜですか?
リアルタイム保護はファイルにアクセスするたびにスキャンします。だから絶えず変化するフォルダー——クラウド同期フォルダー、ビルド出力フォルダー、稼働中のダウンロードフォルダー——は手動スキャンがなくても動かし続けます。PC使用中に予定スキャンが走った場合も同じに見えます。Windowsセキュリティの保護履歴と、イベントビューアーのWindows Defender Operationalログで、実際に何をスキャンしているか確認してください。
除外リストに追加すれば高CPUは直りますか?
MsMpEng.exe を自身の除外リストに追加しても無意味です。除外リストはスキャンされる対象を制御するもので、スキャナー自体ではありません。効くのは、絶えず書き換わる具体的なデータフォルダー(クラウド同期フォルダー、ビルド出力、大きなゲームライブラリ)を除外して、変更のたびに再スキャンするのをやめさせることです。正確に。ドライブ全体を除外するとDefenderを入れている意味がなくなります。