Windows 10、大量のRAMを使用する「システム」プロセス


83

Windows 10にアップグレードしてから、システムがRAMを過度に消費している

ここに画像の説明を入力してください

私は少し読んでいて、おそらくドライバーがメモリをリークしていると判断しました。そこで、Windows Driver Kitを入手し、poolmonでメモリ使用量を追跡しました。

ここに画像の説明を入力してください

しかし、私はここから先に進む方法を本当に知りません。この問題の原因は、「smNp」というタグが付けられたアイテムですか?そこから実際にドライバーを特定するにはどうすればよいですか?

「C:\ Windows \ System32 \ drivers> findstr / s smnp 」のようなものを試しましたが、結果が返されませんでした。また、pooltag.txtファイルを調べましたが、これは私が見つけた説明です。

ここに画像の説明を入力してください

ええ、どんな助けもありがたいです。前もって感謝します。


1
わかった、見つけられた情報を追加した。それらを確認してください
-magicandre1981

1
これは、ディスクへのページングの代わりに圧縮を使用することにより、RAMにより多くのものを実際に保持するシステムの機能です。@ magicandre1981には、正しい答えとして受け入れられるべき正しい情報があります。
マニガンダム

poolmonがsmNpタグに関連付けられていることを示す14メガバイトは、まったく些細な量です。システムプロセスプライベートワーキングセットで1.3 GBを心配している-なぜ14 MBの非ページプール(どのプロセスのワーキングセットにもまったくない)に焦点を当てるのはなぜですか?
ジェイミーハンラハン

回答:


14

移行してservices.msc(ビアWin+R)とSuperFetchはを無効に完全にこれを解決します。Superfetchが今のところ壊れているのか、それとも「設計による」のかはわかりません。

また、ページングファイルを削除しても同じ効果が得られるようですが、上記の解決策の方が安全です。


1
これは実際に機能しました。システムのメモリ使用量は、数時間使用した後でも〜0.1MBに戻ります。ありがとう!
Nayncore

25
通常、このような高いメモリ使用量はメモリリークの赤旗ですが、このメモリはWindows 10の機能として合法的に使用されています(下記のmagicandreの回答を参照)。
Bigbio2002

7
これはバグではなく、無効にすべきではありません
-phuclv


6
この機能によりメモリ不足の警告が常に表示される場合、それは適切な機能ではありません。現在、4GB RAMを搭載したSurface Proは開発にはまったく使用できず、8GB RAMを搭載したラップトップでも、常にこれらの警告が表示されます。解決策のために親指!
オレグI.

93

私はいくつかのユーザーのxperfトレースを見てきましたが、ここでntoskrnl.exe!SmKmStoreHelperWorkerカーネルの機能がメモリの割り当てを開始します。

スクリーンショット
(画像をクリックすると拡大します)

sysinternalsでこれを発見しました

私はそれについてマイクロソフトに尋ねましたが、答えはこれは仕様によるものです。システムメモリの圧縮に関連しています。

Windows 10ビルド10525の発表、Microsoftはそれを少し説明しました

Windows 10では、圧縮ストアと呼ばれるメモリマネージャーに新しい概念を追加しました。これは、圧縮されたページのメモリ内コレクションです。これは、メモリマネージャがメモリのプレッシャーを感じると、ディスクに書き込む代わりに未使用のページ圧縮することを意味します。これにより、プロセスごとに使用されるメモリの量が減り、Windows 10が一度に物理メモリ内により多くのアプリケーションを維持できます。これにより、Windows 10全体での応答性が向上します。圧縮ストアは、システムプロセスのワーキングセットに存在します。システムプロセスはメモリ内にストアを保持するため、メモリが他のプロセスで使用可能になると、そのワーキングセットが正確に大きくなります。これはタスクマネージャーに表示され、システムプロセスが以前のリリースよりも多くのメモリを消費しているように見える理由です。

そのため、メモリデータをページファイルに書き込む代わりに、それらを圧縮します。そして、この圧縮メモリはシステムプロセスに表示されます。

マイクロソフトは内部ハブにも詳細を掲載しました。Winbetaは、詳細を含む記事作成しました

どうやら、この理由は、MicrosoftがUWPアプリをフォアグラウンドにないときにサスペンドすることを選択したことと、たまたまスマートフォンのOS管理に非常に似ていることと関係しているようです。Windows 8ユーザーは、アプリが画面に表示されていなければ、ユーザーが元の画面に切り替えるまで実行されないことを(おそらくではないが)理解していました。「オールオアナッシング」アプローチは、ページファイルと通常のページングアクティビティの間にレイヤーを導入するWindows 10で更新されています。現在、メモリ不足の問題に直面した場合、MMはトリミングと呼ばれるプロセスで、どのページを変更済みリストに移動するかを決定します。変更されたリストは、スタンバイページファイルのリストをバックアップするページファイルのセカンダリリストです。バックアップリストは、メモリが別のプロセスによってスタンバイリストから回収され、元のプロセスがそのページを探しに来た場合にキャプチャされます。Windows 10 MMは、すべてまたは何もする代わりに、未使用のページをディスクに書き込むのではなく圧縮します。書き込みが少なくなると、圧縮のおかげでディスク操作が少なくなり、より多くのデータをメモリに保存できるようになります。

ここに画像の説明を入力してください

Windowsチームによると、「実際には、圧縮メモリは非圧縮サイズの約40%を占め、典型的なデバイスが典型的なワークロードを実行する結果、Windows 10は以前のバージョンの50%だけをディスクに書き込みます。 OS。すべてが計画どおりに進んだ場合、Windowsユーザーは、すべてのデバイスの待ち時間が短縮されるだけでなく、フラッシュベースのハードドライブを搭載したシステムでの寿命が長くなる可能性があります

減圧もWindows 10がうまく機能するように設計されたものです。Windows 10は、並列化とシーケンシャル読み取りの組み合わせを使用して、呼び出されたメモリにページを生成します。Windows 10は複数のCPUを使用してデータを同時に解凍し、並行して読み取るため、新しい解凍はより高速なエクスペリエンスをもたらすはずです。Windowsの古いバージョンは、ディスク間の転送速度のために動作が遅く感じられた可能性があります。

Microsoftは、この機能を説明するビデオをchannel9でもリリースしました。

Windows 10 RTMのメモリ圧縮
https://channel9.msdn.com/Blogs/Seth-Juarez/Memory-Compression-in-Windows-10-RTM

このビデオでは、Mehmet IyigunがWindows 10のシステムプロセスがもう少しメモリを消費している理由と、なぜそれが良いことなのかを議論しました。より多くのメモリを使用するプロセスは、悪いことのように聞こえます。それは、メモリ管理、ページング、ハード/ソフトページフォールトについてさらに理解するまでです。OSがいくつかの巧妙な最適化を行っているため、プロセスはメモリの一部をトリミングできますが、ディスクにページアウトする必要はありません。メモリはRAMに保存されるだけでなく、圧縮されるため、ハードページフォールトはよりまれに発生します。結果は、よりすてきな体験になります。

最新のTH2ビルドでは、Microsoftはタスクマネージャーの説明を更新し、SYSTEMプロセスが以下をホストしていることも示していますcompressed memory

ここに画像の説明を入力してください

「高」使用法に関する混乱を避けるため。

2016年8月にリリースされたWindow 10 Anniversary Updateで、Microsoft Memory CompressionはSYSTEMのメモリ使用量が非常に大きい理由をユーザーを混乱させないために呼び出される疑似プロセスに表示される圧縮を抽出しました。

ここに画像の説明を入力してください

しかし、Taskmgrはこのプロセスを表示しないようです。ProcessExplorer/ ProcessHackerのみが表示できます。Taskmgrは、概要に圧縮メモリの量のみを表示します。

ここに画像の説明を入力してください

Taskmgrの使用済みメモリグラフにカーソルを合わせると、圧縮されたデータの量を示すツールチップが表示されます。

ここに画像の説明を入力してください

このデモでは、388MBが122MBに圧縮されているため、267MBが圧縮とともに保存されます。


9
@Zaibis:アイデアは、「1GBを落とさない」ことだと思います。1GBはWindowsによって予約されており、割り当てに使用されます。あなたは記憶を失っていません。
オービットの明るさのレース

12
「未使用のメモリは無駄なメモリ」は、OS Xの長年のスローガンでした。Windowsも搭載されたようです。
15

1
@ magicandre1981どういう意味ですかSystem Memory compression
-user2284570

2
詳細に答えることはできません。設計によるものであり、メモリ圧縮と関係があるという情報しか得られませんでした。これについてはブログ投稿で説明します。新しい情報を入手したら、投稿を更新します。
magicandre1981

2
@JosiahKeller「低メモリ」ダイアログは、低仮想メモリに関するものです。物理メモリ(RAM)の使用や可用性とはほとんど関係ありません。これらはすべての最新のデスクトップOSによって個別に説明されます。
デビッドシュワルツ

0

システムメモリの使用率が高くなる異常値のケースを見つけたため、この情報が誰かに利益をもたらす場合に備えて、それを含めたいと考えました。

Microsoftのボリュームスナップショット(ハードウェアスナップショットではなく、ソフトウェアスナップショット)を頻繁に使用する場合、保持するスナップショットが多くなり、大きなデータの変更が組み合わされると、システムはより多くのRAMを消費します。

通常、ボリュームスナップショットに使用されるRAMの量は少なく、スナップショット間にマルチテラバイトのデルタがある巨大なボリューム(64 TB)がない限り、気づかれません。デフォルトでは、スナップショットは書き込みIOが高くなりすぎると単純に削除されますが、それを防ぐ方法があり、大規模なデルタに到達できます。

以下は、13GBのRAMを使用するサーバーのシステムプロセスを示す極端なケースです。このサーバーにはボリュームスナップショットが2つしかなく、15日間の間隔で作成され、各スナップショットの間に約10 TBのデータが書き込まれます。

13GBのシステムメモリ使用量

上記のシステムプロセスの使用量は以前は24GBでしたが、次の3つの動作が観察されました。

  1. 再起動してログインし直すと、デスクトップが表示されるまで、システムはしばらくの間空白の画面でハングします。
  2. このハング中に、タスクマネージャー(CTRL-SHIFT-ESC)を引き上げると、システムのメモリ使用量が増加することが示されました。
  3. このハング中に、ボリュームスナップショットを含むディスクは、パフォーマンスモニターに表示されない多くの読み取りを実行しました。ただし、ディスクはiSCSIを使用したため、ネットワークカードは約200 Mbpsの安定した読み取りストリームを示しました。

ボリュームスナップショットが疑われたため、システムのメモリ使用量を24 GBから13 GBに瞬時に落とした最も古いスナップショットを削除しようとしました。

これらの状況では、これは正常な動作である可能性がありますが、マイクロソフトではこれを確認していません。それまでは、このサーバーに32 GBのRAMを追加して、スナップショットのオーバーヘッドを処理します。

(注:これは、64 TB SSD iSCSIドライブが接続されたWindows 2016を実行する大容量のバックアップサーバーです。任意の時点で平均3つのボリュームスナップショットを維持し、15日ごとに新しいスナップショットを作成します。各スナップショットの間に書き込まれたデータ)。


-1

regeditをキーにプリフェッチャを無効にする:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParametersあなたはおそらく持っているEnable Prefetcherの価値で2あるいは3そうにそれを変更します0

次にSuperfetch、サービスで無効にする必要があります

  1. services.mscを検索します

  2. superfetchクリックして検索propertiesを設定しdisabled、サービスを停止します。

私はこれらの手順を実行し、ゲームをしているときに通常PCを使用しており、systemプロセスは28kしか使用していません


12
これは恐ろしいアイデアです。プリフェッチ/スーパーフェッチは、理由のために使用されます。OSよりもメモリをうまく管理できると思うなら、あなたは悲しいことに間違っています。
b1nary.atr0phy

プリフェッチを無効にする(または「プリフェッチフォルダーを消去する」)ことは、非常に馬鹿げたアイデアです。プリフェッチにより、システムがそれ以上RAMを使用することはありません。exeおよびdll を起動するとそれらの読み込みが高速化されます。SuperFetchに関して、MicrosoftはWindowsドライブ用のSSDを備えたシステムでデフォルトでSuperFetchを無効にします。彼らは利益は価値がないと感じています。個人的には、SFを動作させたい他のドライブ(非SSD)があるため、それを有効にします。
ジェイミーハンラハン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.