我查看了多个用户的xperf痕迹,此处ntoskrnl.exe!SmKmStoreHelperWorker
内核功能开始分配内存。
(点击图片放大)
我在sysinternals上发现了这一点。
我问过微软,答案是这是设计使然。它与系统内存压缩有关。
在Windows 10 Build 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%。操作系统。如果一切都按计划进行,则Windows用户可能会减少所有设备的等待时间,并延长具有基于闪存的硬盘驱动器的系统的使用寿命。
Windows 10还设计有出色的解压缩功能。Windows 10将并行性和顺序读取结合使用,以在调用后将页面生成到内存中。新的解压缩应可带来更快的体验,因为Windows 10会同时解压缩数据并使用多个CPU并行读取数据。由于磁盘之间的传输速率,较旧版本的Windows可能感觉很迟钝。
微软还在channel9上发布了一个视频,解释了该功能。
Windows 10 RTM中的内存压缩
https://channel9.msdn.com/Blogs/Seth-Juarez/Memory-Compression-in-Windows-10-RTM
在这段视频中,Mehmet Iyigun花了一些时间讨论为什么Windows 10中的系统进程占用更多的内存以及为什么这是一件好事。占用更多内存的过程听起来像是一件坏事-直到我对内存管理,页面调度和硬/软页面错误有更多了解为止。事实证明,操作系统正在进行一些巧妙的优化,这些优化使您的进程可以修剪一些内存,但不必将其分页到磁盘。不仅将内存保留在RAM中,还对其进行了压缩-导致硬页面错误的情况更加罕见。结果应该使您获得更快速的体验。
在最新的TH2版本中,Microsoft更新了任务管理器中的描述,现在还显示SYSTEM进程承载compressed memory
:
避免混淆“高”用法。
在2016年8月发布的Window 10 Anniversary Update中,Microsoft将Compression提取到一个伪进程中,该伪进程显示Memory Compression
为不再使用户混淆SYSTEM为什么具有如此大的内存使用量:
但是看来Taskmgr没有显示此过程,只有ProcessExplorer / ProcessHacker可以显示它。Taskmgr仅在概述中显示压缩的内存量:
如果将鼠标悬停在Taskmgr中的已用内存图上,则会看到一个工具提示,其中显示了压缩数据的数量。
在此演示中,将388MB压缩为122MB,因此压缩后可节省267MB。