Windows 10 中“系统和压缩内存”的 CPU 使用率高的原因是什么?

Ray*_*der 40 memory compression performance cpu-usage windows-10

在我的笔记本电脑上对 Windows 10 进行了观察,可用内存为 24G,使用了 2.5G。没有“记忆压力”。其他问题着眼于内存消耗(这不是这里的问题)。在此处和其他地方的所有相关问题中,在 Windows 10 更新之一之后的最后一两个月内,我无法找到对这种 CPU 使用率过高问题的充分解释。

我可以接受此服务或流程的价值,但要持续运行并使用额外的 CPU 资源,因此会降低电池电量的使用效率,这就是我正在尝试解决的问题。

在这个站点上的一些文章中,建议我关闭 SuperFetch,并将 PrefetchParameters 的注册表项设置为 0。我做了这两项并重新启动。

我重新启动机器,关闭屏幕保护程序,然后启动任务管理器。几分钟后,标记为“系统和压缩内存”的服务开始持续占用我 cpu 的 5%。我的基本 CPU 利用率可能是 1%,这使风扇保持在低位。但是,当“系统和压缩内存”服务以 5% 的速度运行时,风扇会加速。并且一直在运行。

愚蠢。为什么该服务需要像这样在没有内存压力的情况下持续运行?我可以尝试关闭它或确定它实际在做什么的任何其他机制?某处是否有日志文件条目?还是深入的诊断工具?

how-to-disable-windows-10-memory-compression -- 这里没有真正的答案

windows-10-system-process-take-mass-of-ram

17993-windows-10-内存压缩

desktop-build-10525-and-windows-10-memory

www.techish.net/system-and-compressed-memory/

windows-10-build-1511-overheating-cpu-fan-always

Windows 性能记录器- 现在需要一个链接以获取有关如何解释信息的信息

擦洗保养

mag*_*981 29

使用 WPA 分析 ETL 文件表明,CPU 使用率并非来自系统内存压缩。它来自ntoskrnl.exe!MiScrubMemoryWorker

Line #, DPC/ISR, Process, Stack Tag, Stack, Count, TimeStamp (s), % Weight
8, , , ,    |    |    |- ntoskrnl.exe!MiScrubMemoryWorker, 79667, , 12,45
9, , , ,    |    |    |    ntoskrnl.exe!MiScrubNode, 79667, , 12,45
10, , , ,   |    |    |    ntoskrnl.exe!MiScrubNodeLargePages, 79667, , 12,45
11, , , ,   |    |    |    ntoskrnl.exe!MiScrubNodeLargePageList, 79667, , 12,45
12, , , ,   |    |    |    |- ntoskrnl.exe!MiScrubPage, 79663, , 12,45
13, , , ,   |    |    |    |    |- ntoskrnl.exe!RtlScrubMemory, 79653, , 12,45
14, , , ,   |    |    |    |    |    |- ntoskrnl.exe!RtlpGenericRandomPatternWorker, 38549, , 6,02
Run Code Online (Sandbox Code Playgroud)

这是一个通过填充/读取一些模式(ntoskrnl.exe!RtlpGenericRandomPatternWorker)来测试内存错误的功能。

这是设计使然,当您的设备空闲时空闲维护任务开始时会发生。

  • 对于关闭,在 Win 10 上,我转到:开始->控制面板->管理工具->任务计划程序任务计划程序库->Microsoft->Windows->MemoryDiagnostic 有两个行项目。任务的运行可能取决于日志事件。我不确定它们是否必须存在,或者它们是否在进入日志时触发。我禁用了 RunFullMemoryDiagnosticEntry。几分钟延迟后,我不再看到 5% 到 12% 的利用率。在任务的属性中,在设置选项卡上,可以将事情调整为不经常运行。.... 再测试一次。 (11认同)
  • 好吧,巨魔投了反对票。是的,xperf/WPR/WPA 是 500 级专家的东西,所以不适合你这个没有受过教育的白痴巨魔 *facepalm* (3认同)
  • 很高兴听到它解决了您的问题。 (2认同)

Jam*_*han 8

首先,重新。CPU 使用率:“系统和压缩内存”进程(它不是服务)执行许多功能。仅仅因为您看到它使用 CPU 时间并不意味着它正在压缩内存内容。要找出答案,请使用进程资源管理器查找进程中正在使用 CPU 时间的线程函数的名称。您需要在 Process Explorer 中配置符号才能执行此操作,如本答案中所述

被压缩的内存是被压缩的内存

  • 进程的私有工作集的一部分(即与任何其他进程共享);和
  • 在此过程中进行了修改;和
  • 随后由于页面替换而从进程中丢失,并放入修改页面列表。(此算法并未针对 Windows 10 进行实质性更改。您不会像以前那样获得更多的页面替换。)

现在...如果您没有页面文件,它将只保留在修改后的页面列表中(直到过程结束)。(请注意:禁用页面文件不会改变目前所描述的行为。)

如果您确实有页面文件(当然,强烈建议您这样做),则 Windows 10 和以前版本之间的行为会有所不同。

  • 在 Windows 10 之前,它很快就会被写入页面文件,物理页面将被移动到备用页面列表。这是由系统进程中的“修改页面编写器”线程完成的。

  • 在 Windows 10 中,它首先被压缩(占用的空间大约是过去的一半)并存储在系统进程的用户模式地址空间中(现在称为“系统和压缩内存”)。如果需要释放内存,则可以将其写入页面文件并释放以供其他用途。(请注意,空间压缩的好处也适用于页面文件空间和 I/O 时间。)

所以,真的,这是一件好事。无论您看到系统进程使用了​​多少额外的内存,在 Windows 10 之前,修改后的页面列表或待机列表中大约会使用两倍的内存。当然,它不会比以前占用更多的空间。

您可以(根据我最近的测试)通过删除页面文件来禁用此机制,但这不会影响页面替换行为;从进程中推出的修改过的私有页面将根本没有资格被释放用于其他用途,并且内存(大约是系统进程的两倍)将只是位于 MPL 上,而不是在系统进程中。


归档时间:

查看次数:

67827 次

最近记录:

9 年,5 月 前