iBitzEdge

「システムと圧縮メモリ」がメモリやCPUを大量に使用してしまう問題と解決法

Windows10にアップデートしてから動作が重くなったことに気づき、タスクマネージャ上に「システムと圧縮メモリ」という、CPU、メモリ、またはディスクを大量に消費している項目に気づいたユーザーは少なくない。

ユーザーによっては、ゲームをしている時やメモリの使用量が多いアプリを起動している時など重くなるタイミングは様々だが、このシステムと圧縮メモリがメモリやCPUなどを消費してひどい時は99%や100%にまでなっているという。

ここでは、PCが重くなった場合の解決法がいくつか報告されているのでそれらを簡単に紹介する。

 

 

タスクマネージャで確認できるシステムと圧縮メモリ

Ctrl+Shift+Esc」キーを同時に押すとタスクマネージャを起動できる。
タスクマネージャの詳細をクリックし、プロセスタブにあるCPUやメモリ、またはディスクの使用率順にソートしてみると「システムと圧縮メモリ」という項目が高い使用率になっていることがある。
気づかない場合もあるが、メモリの使用量が多いアプリケーションやゲームなどを利用している場合は、かなり動作が重く感じることがある。

「システムと圧縮メモリ」とは

Windows10のシステムと圧縮メモリ(System And Compressed Memory)に関して、Microsoftでは以下の様な説明をしている。

Windows 10 では、メモリ マネージャーに圧縮ストアという新しいコンセプトが追加されました。圧縮ストアとは、メモリ内の圧縮されたページの集合体です。メモリ マネージャーによってメモリ不足が検出されると、使用されていないページはディスクに書き込まれる代わりに圧縮されます。その結果、プロセスごとのメモリ使用量が削減され、物理メモリ内で一度に維持できるアプリケーションの数が増えるほか、Windows 10 全体の応答速度も改善されます。圧縮ストアはシステム プロセスのワーキング セットに格納されます。システム プロセスがメモリ内の圧縮ストアを保持するため、メモリが他のプロセスで利用可能になった瞬間にワーキング セットのサイズが大きくなります。サイズが大きくなったことは、タスク マネージャーで確認できます。システム プロセスのメモリ使用量が以前のリリースよりも増加しているように見えるのは、これが理由です。

Microsoft

システムと圧縮メモリ自体を無効にする方法もあるができればこの機能自体を残したまま解決したい。いくつかの報告によると、多くの場合は機能自体を無効にする必要はなく解決に至ったユーザーがいるようだ。もちろん最低限のメモリがPCに搭載されていることが前提である。

解決策1. 「SuperFetch」を無効にする

いくつかあった解決法の中でも簡単にできる方法で、SuperFetchを無効にする方法がある。
SuperfetchはMicrosoft Windows Vistaで導入されたもので、アプリケーションを起動するのに必要な時間を低減しパフォーマンス向上させるものである。

SuperFetchはWindowsのメモリマネージャサービスと連携するもので、最適なメモリ量を決定するために時間をかけてメモリの使用パターンを分析するが、メモリキャッシュが増えるとキャッシュの計算にCPUの時間を取られる。また、場合によって効果が出ないことがある。
この機能を停止することで解決することがある。

Step1.

検索(Win+R)もしくはWindowsボタン、スタートメニューに「services.msc」と入力して直接サービスマネージャを起動させ、下へスクロールし「Superfetch」の項目をダブルクリックする

 

Step2. 

「サービスの状態」の下にある「停止」をクリックして停止する。さらにスタートアップの種類を自動から「無効」に変更する。(自動のままの場合PC起動時に自動的にスタートアップとして起動する

変更後は適用をクリックしてOKボタンでウィンドウを閉じる。

 

念のためPCを再起動して確かめてみよう。上記の手順で解決しない場合は、解決策2の手順を試してみると解決するかもしれない。

解決策2. Ndu.sysを無効にする

上記の方法とは別にNdu.sysを無効にする方法で解決することがある。
Ndu.sysはカーネルモードドライバーで、Windowsのネットワークデータ使用量を監視するドライバーサービスである。この監視を停止させることで解決するという方法であるようだ。ちなみにNdu.sysのパスは%WinDir%\system32\drivers\となっている。

以下で紹介する方法はWindows8の時にも一部で発生していたメモリリーク問題を解決した方法と同じものである。

また、ここの手順はレジストリに変更を加えるものであるため行う際は自己責任でお願いする。

 

Step1. 

「Win+R」キーを押して「ファイル名を指定して実行」ダイアログボックスに「regedit」と入力してエンターまたはOKをクリックし、レジストリエディターを起動する。

 

Step2.

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Ndu
に移動する。

 

Step3.

Start」をダブルクリックし、Startの値を無効にするため「4」と入力してOKボタンを押す。(デフォルトは2)
レジストリエディターを終了させてPCを再起動する。

 

以上の手順で多くのユーザーが解決したようだ。これらの方法で必ず解決するというわけではないが、もし同じ問題が発生した場合はやってみる価値はあるかもしれない。