何人かのユーザーのxperfのトレースを見てみましたが、ここではカーネルの関数ntoskrnl.exe!SmKmStoreHelperWorker
がメモリの割り当てを開始しています。
(画像をクリックすると拡大します)
これは sysinternals で発見しました。
マイクロソフトに聞いてみたところ、これは設計上の問題だという答えが返ってきました。システムメモリの圧縮に関係しています。
Windows 10 Build 10525の発表で、Microsoftが少し説明していました .
Windows 10では、メモリマネージャに圧縮ストアと呼ばれる新しい概念が追加されました。これにより、プロセスごとに使用されるメモリ量が削減され、Windows 10では一度に多くのアプリケーションを物理メモリ上で維持できるようになります。これはまた、Windows 10 全体でより良い応答性を提供するのにも役立ちます。圧縮ストアは、システムプロセスの作業セットに格納されます。システムプロセスがストアをメモリ内に保持しているため、システムプロセスの作業セットは、メモリが他のプロセスで使用可能になると同時に大きくなります。これはタスクマネージャで確認でき、システムプロセスが以前のリリースよりも多くのメモリを消費しているように見える理由です。そして、この圧縮されたメモリはシステムプロセスに表示されます。
Microsoftはインサイドハブにも詳細を掲載しています。 Winbetaさんが記事を作成しました 詳細が記載されています。
どうやらこの原因は、マイクロソフトがUWPアプリがフォアグラウンドにないときにUWPアプリをサスペンドすることを選択したことに関係していたようで、いくつかのスマートフォンのOS管理に非常に似ています。Windows 8のユーザーは、アプリが画面に表示されていなければ、ユーザーがアプリに切り替えるまで起動しないことを理解していた(おそらく理解していなかった)。Windows 10では、ページファイルと通常のページングアクティビティの間にレイヤーを導入することで、「オール・オア・ナッシング」アプローチが更新されています。現在、メモリ圧の問題に直面した場合、MMは、トリミングと呼ばれるプロセスでどのページを変更されたリストに移動すべきかを判断します*** 変更されたリストは、待機ページファイルのリストをバックアップするページファイルのセカンダリリストです。変更後のリストは、待機ページファイルのリストをバックアップしているページファイルのセカンダリリストです。Windows 10 MMでは、ディスクに書き込むのではなく、使用されていないページを圧縮します。これにより、ディスクへの書き込みが少なくなり、結果としてディスク操作が少なくなります - 圧縮のおかげで - より多くのデータをメモリに保存できるようになりました。
Windowsチームによると、" **実際には、圧縮されたメモリは圧縮されていないサイズの約40%を消費し、典型的なデバイスが典型的なワークロードを実行した結果、Windows 10がディスクにページを書き出す頻度は、以前のバージョンのOSに比べて50%に過ぎません。
解凍もまた、Windows 10がうまく機能するように設計されています。Windows 10 は、一度呼び出されたページをメモリに生成するために、並列性とシーケンシャルリードの組み合わせを使用しています。Windows 10は複数のCPUを使ってデータの解凍と読み込みを同時に行っているので、新しい解凍はより高速な体験になるはずです。旧バージョンのWindowsでは、ディスク間の転送速度の関係で遅く感じていたかもしれません。
マイクロソフトはこの機能を説明する動画もchannel9で公開しています。
Memory Compression in 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が圧縮されて保存されています。