メモリ – Windows 10は、’システム’プロセスは、大量のRAMを取る

drivers memory memory-leaks windows windows-10

Windows 10にアップグレードしてから、システムがRAMを過剰に消費するようになりました

enter image description here

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

enter image description here

しかし、ここから先の進め方がよくわかりません。今回の問題の犯人は「smNp」というタグのついたアイテムなのか?そこから実際にドライバを特定するにはどうすればいいのでしょうか?

C:\Windows\System32\drivers>findstr /s smnp …」とか試してみたけど、何も出てこない。pooltag.txtを見てみると、以下のような記述がありました

enter image description here

どんな助けも感謝します前もって感謝します

  83  Nayncore  2015-08-07


ベストアンサー

services.mscに入って(Win+Rを経由して)スーパーフェッチを無効にすることで完全に解決します。スーパーフェッチが今のところ壊れているだけなのか、それとも「設計上」壊れているのかはわかりません

また、どうやらページングファイルを取り除くことは同じ効果があるようですが、上記の解決策の方が安全です

13  den  2015-08-09


何人かのユーザのxperfのトレースを見てみましたが、ここではカーネルの関数ntoskrnl.exe!SmKmStoreHelperWorkerがメモリの割り当てを開始しています

Screenshot (画像をクリックすると拡大します)

sysinternals で発見しました

マイクロソフトに聞いてみましたが、これは設計上の問題だという答えが返ってきました。システムメモリの圧縮に関係しています

Windows 10 Build 10525の発表では、マイクロソフトはそれを少し説明しました

Windows 10では、メモリマネージャに圧縮ストアと呼ばれる新しい概念が追加され、圧縮されたページのインメモリコレクションとなっています。これは、メモリマネージャがメモリ圧力を感じると、ディスクに書き込む代わりに未使用のページを圧縮するというものです。これにより、プロセスごとに使用されるメモリの量が減り、Windows 10では一度に多くのアプリケーションを物理メモリに保持できるようになります。これはまた、Windows 10 全体でより優れた応答性を提供するのにも役立ちます。圧縮ストアはシステムプロセスの作業セットにあります。システムプロセスはメモリ内にストアを保持しているため、メモリが他のプロセスで使用可能になったときに作業セットが大きくなります。これはタスク マネージャーで確認でき、システム プロセスが以前のリリースよりも多くのメモリを消費しているように見える理由です

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

また、Microsoftはインサイドハブにも詳細を掲載しています。Winbetaが詳細を記載した記事を作成しました

どうやらこの原因は、マイクロソフトがUWPアプリがフォアグラウンドにないときにUWPアプリを一時停止させることを選択したことに関係しているようだ。Windows 8のユーザーは、アプリが画面に表示されていなければ、ユーザーがアプリに切り替えるまで起動しないことを理解していた(おそらく理解していなかった)。Windows 10では、ページファイルと通常のページングアクティビティの間にレイヤーを導入することで、「オール・オア・ナッシング」アプローチが更新されています。現在では、メモリ圧の問題に直面した場合、MMはトリミングと呼ばれる処理でどのページを修正リストに移動すべきかを判断します。修正されたリストは、スタンバイページファイルのリストをバックアップするページファイルのセカンダリリストです。バックアップ リストは、メモリが別のプロセスによって待機リストから解放され、元のプロセスがそのページを探しに来た場合に備えてキャプチャされます。Windows 10 MM では、ディスクに書き込むのではなく、使われていないページを圧縮します。書き込みが減ることで、結果としてディスク操作が減り、圧縮のおかげでより多くのデータをメモリに保存することができるようになります

enter image description here

Windowsチームによると、”実際には、圧縮メモリは非圧縮サイズの約40%を占有し、典型的なデバイスが典型的なワークロードを実行した結果、Windows 10は、以前のバージョンのOSと比べて50%の頻度でディスクにページを書き出します。”すべてが計画通りに行けば, 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をホストしていることを示すようになりました

enter image description here

高い」使い方に混乱しないようにするために

2016年8月にリリースされたWindow 10 Anniversary Updateでは、Microsoftは、なぜSYSTEMがこのような大きなメモリ使用量を持っているのか、もはやユーザーを混乱させないために、Memory Compressionと呼ばれる疑似プロセスで表示されるようになりましたに圧縮を抽出しました

enter image description here

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

enter image description here

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

enter image description here

今回のデモでは388MBが122MBに圧縮されているので、267MBが圧縮されて保存されています

95  magicandre1981  2015-08-07


システムメモリの使用量が多くなる異常なケースを見つけたので、この情報が誰かの役に立つ場合に備えて入れておきたいと思いました

Microsoftのボリュームスナップショット(ハードウェアのスナップショットではなく、ソフトウェアのスナップショット)を多用すると、スナップショットと大規模なデータの変更を組み合わせて保存するほど、システムはより多くのRAMを消費するようになります

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

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

System Memory Usage at 13GB

上記のSystemプロセスは、以前は24GBの使用量で、以下の3つの挙動が見られました

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

ボリュームスナップショットを疑っていたので、一番古いスナップショットを削除してみたところ、Systemのメモリ使用量が24GBから13GBに瞬時に落ちました

このような状況では、これは正常な動作かもしれませんが、Microsoftには確認していません。それまでの間、スナップショットのオーバーヘッドを処理するために、このサーバーに32GBのRAMを追加する予定です

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

0  Brain2000  2019-08-31


regeditキーのプリフェッチャを無効にする。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParametersの場合、Enable Prefetcherの値が23になっている可能性が高いので、0に変更してください

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

  1. services.mscを検索します

  2. superfetchを見つけてpropertiesをクリックし、disabledに設定してサービスを停止します

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

-1  Grzesiek Grzychu Góra  2015-08-20


タイトルとURLをコピーしました