題 Windows 10,'系統'進程佔用大量RAM


自從我升級到Windows 10以來,我的系統一直在過度消耗RAM

enter image description here

我一直在閱讀,並確定它可能是一個驅動程序洩漏內存。所以我得到了自己的Windows驅動程序工具包並跟踪了poolmon的內存使用情況:

enter image description here

但是,我真的不知道如何從這裡開始。該項目標記為“smNp”是否是此問題的罪魁禍首?我如何從那裡去實際識別驅動程序?

我試過像“C:\ Windows \ System32 \ drivers> findstr / s smnp”這樣的東西 “但它沒有返回任何結果。我還看了一下pooltag.txt文件,這是我找到的描述:

enter image description here 

所以,是的,任何幫助將不勝感激。 提前致謝。


79
2017-08-07 04:17


起源


好的,我添加了能夠找到的信息。檢查一下 - magicandre1981
這是系統的一個功能,通過使用壓縮而不是分頁到磁盤來實際將更多內容保存在RAM中。 @ magicandre1981在這裡有正確的信息,應該被接受作為正確的答案。 - Mani Gandham
poolmon顯示的14兆字節與smNp標記相關聯是一個非常微不足道的數量。您擔心系統進程私有工作集中的1.3 GB - 為什麼要關注14 MB的非頁面緩衝池(根本不在任何進程的工作集中)? - Jamie Hanrahan


答案:


通過進入 services.msc (通過 贏+ R)並禁用Superfetch完全解決了這個問題。我不確定Superfetch現在是否已經破壞,或者它是“按設計”。

此外,顯然擺脫頁面文件將具有相同的效果,但上述解決方案是一個 更安全 打賭。


15
2017-08-09 23:24



這實際上有效。即使在使用數小時後,系統的內存使用量也會恢復到~0.1MB。謝謝! - Nayncore
雖然通常如此高的內存使用率會成為內存洩漏的紅色標誌,但這個內存被合法地用作Windows 10的功能(請參閱下面的magicandre的回答)。 - Bigbio2002
它不是一個錯誤,不應該被禁用 - phuclv
lifehacker.com/... - phuclv
如果該功能導致持續的低內存警告,則這不是一個好功能。現在我的帶有4GB RAM的Surface Pro完全不能用於開發,即使在配備8GB RAM的筆記本電腦上,我也經常收到這些警告。大拇指尋求解決方案! - Oleg I.


我看了幾個用戶的xperf痕跡和這裡的功能 ntoskrnl.exe!SmKmStoreHelperWorker 內核開始分配內存。

Screenshot
(點擊圖片放大)

我發現了這個 Sysinternals的

我已經向微軟詢問了它,答案是這是設計的。它與系統內存壓縮有關。

微軟公佈了Windows 10 Build 10525的消息

在Windows 10中,我們在內存管理器中添加了一個新概念   稱為壓縮存儲,它是內存中的集合   壓縮頁面。 這意味著當內存管理器感覺到內存時   壓力,它會 壓縮未使用的頁面而不是寫入它們   磁盤。 這樣可以減少每個進程使用的內存量   Windows 10一次在物理內存中維護更多應用程序。   這也有助於在Windows 10中提供更好的響應能力   壓縮存儲位於System進程的工作集中。 自從   系統進程將存儲保存在內存中,其工作集變大   確切地說,當內存可用於其他進程時。這個   在任務管理器中可見,並顯示系統進程的原因   比以前的版本消耗更多的內存。

因此,不是將內存數據寫入頁面文件,而是將其壓縮。此壓縮內存顯示在系統進程中。

微軟還在內部集線器中發布了更多細節。 Winbeta創造了一篇文章 其中包括更多細節。

顯然,其原因恰好與微軟選擇有關   當他們不在前台時,暫停UWP應用程序   類似於一些智能手機OS管理。 Windows 8用戶理解   (也許不是)如果應用程序不在屏幕上,它們將無法運行直到   用戶切換回他們。 “全有或全無”的方法正在形成   更新 Windows 10在頁面文件和。之間引入了一個層   正常的尋呼活動。現在,當遇到記憶壓力問題時,   MM將確定應將哪些頁面移動到修改後的列表中   一個叫做修剪的過程。 修改後的列表是輔助列表   pagefiles備份備用頁面文件列表。備份列表是   捕獲以便由另一個從備用列表中回收內存   進程,原始進程來尋找它的頁面。 代替   無論是全部還是全部,Windows 10 MM都會壓縮未使用的頁面   而不是寫入磁盤。寫作較少,結果應該是   磁盤操作更少  - 感謝壓縮 - 現在有更多數據   可以存儲在內存中。

enter image description here

根據Windows團隊的說法,“實際上,壓縮內存需要   大約40%的未壓縮尺寸,並且由於典型的原因   在運行典型工作負載的設備上,Windows 10將頁面寫入磁盤   僅比以前版本的操作系統頻繁50%。“如果一切順利   根據計劃, Windows用戶可能會遇到減少等待的問題   所有設備的時間以及系統上的延長壽命   有基於閃存的硬盤

解壓縮也是Windows 10旨在做得很好的事情。   Windows 10正在使用並行化和   順序讀取,一旦調用就生成頁面到內存中。新的   解壓縮應該會帶來更快的體驗,就像Windows 10一樣   同時解壓縮數據並使用並行讀取數據   多個CPU。較舊版本的Windows可能感覺遲鈍   因為磁盤之間的傳輸速率。

微軟還在channel9上發布了一個Video,它解釋了這個功能。

Windows 10 RTM中的內存壓縮
https://channel9.msdn.com/Blogs/Seth-Juarez/Memory-Compression-in-Windows-10-RTM

在這段視頻中,Mehmet Iyigun花了一些時間討論系統的原因   Windows 10中的進程佔用了更多的內存,為什麼它是一個好的   事情。佔用更多內存的過程聽起來像是一件壞事 - 就是這樣   直到我更多地了解內存管理,分頁和硬/   軟頁面錯誤。事實證明,操作系統做得有些聰明   優化,允許您的進程修剪一些內存,但   不一定將其分頁到磁盤。不僅保留了內存   在RAM中,但它也被壓縮 - 使硬頁面錯誤更多   很少發生。結果應該是一個更快樂的經歷。

在最新的TH2 Builds中,Microsoft更新了任務管理器中的描述,現在還顯示了SYSTEM進程託管的 compressed memory

enter image description here

避免混淆“高”用法。

在2016年8月發布的Window 10 Anniversary Update中,Microsoft將壓縮提取到現在顯示的偽進程中 Memory Compression 不再混淆用戶為什麼SYSTEM有如此大的內存使用量:

enter image description here

但看起來Taskmgr似乎沒有顯示此過程,只有ProcessExplorer / ProcessHacker能夠顯示它。 Taskmgr僅顯示概述中的壓縮內存量:

enter image description here

如果將鼠標懸停在Taskmgr中的已用內存圖上,則會看到一個工具提示,顯示壓縮的數據量。

enter image description here

在這個演示中,388MB被壓縮到122MB,因此壓縮可以節省267MB。


91
2017-08-07 04:20



@Zaibis:我認為這個想法是你不是“丟棄1GB”。 Windows已保留1GB,將用於分配。你還沒有 丟失 記憶。 - Lightness Races in Orbit
“未使用的內存浪費內存”一直是OS X的口頭禪。看起來Windows也加入了。 - deceze
@ magicandre1981你是什麼意思System Memory compression - user2284570
我不能詳細回答這個問題。我只獲得了它的設計信息,與內存壓縮有關,這將由博客文章解釋。當我收到新信息時,我會更新我的帖子。 - magicandre1981
@JosiahKeller“低內存”對話框是關於虛擬內存不足的。它幾乎與物理內存(RAM)的使用或可用性無關。它們由所有現代桌面操作系統分開計算。 - David Schwartz


在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


-1
2017-08-20 11:08



這是一個可怕的想法。使用預取/超級提取是有原因的。如果你認為你可以比你的操作系統更好地管理內存,那你就錯了。 - b1nary.atr0phy
禁用預取(或“清理預取文件夾”)確實是一個非常愚蠢的想法。預取不會導致系統使用更多RAM。它加快了exe和dll的加載速度 一旦你開始他們,只有這樣。 Re SuperFetch,Microsoft在具有用於Windows驅動器的SSD的系統上默認禁用SuperFetch;他們覺得好處不值得。我個人保持啟用,因為我有其他驅動器,非SSD,我希望SF仍在運行。 - Jamie Hanrahan