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


39

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

我可以接受这项服务或过程中的价值,但要持续运行并使用其他cpu资源,因此,降低电池电量的使用效率是我要解决的问题。

在此站点上的某些文章中,建议我关闭SuperFetch,并将PrefetchParameters的注册表项设置为0。

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

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

如何禁用Windows-10-内存压缩 -此处无实际答案

Windows-10-系统进程获取大量的内存

17993-windows-10-内存压缩

桌面生成10525和Windows 10内存

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

Windows-10-Build-1511-过热-CPU-风扇始终

Windows Performance Recorder-现在需要一个链接,以获取有关如何解释信息的信息

擦洗保养


1
是的,我一直不知道为什么Windows在有足够的内存时为什么使用页面文件,禁用页面文件可能会解决您的问题。
摩押


@Moab:人们认为Windows“在有足够的内存时使用页面文件”来自Windows XP的任务管理器上的错误标签-他们将图形标记为“ PF使用情况”,而应该将其“承担费用”。如果您使用PerfMon来检查实际的页面文件使用情况,通常会发现它远小于预期。
Jamie Hanrahan

2
捕获CPU使用情况的痕迹。从Win10 SDK安装WPT:dev.windows.com/en-us/downloads/windows-10-sdk,运行WPRUI.exe,选择CPU,磁盘,VirtualAlloc,ResidentSet,并捕获1-2分钟的SYSTEM使用情况并保存将其转换为ETL文件。将ETL + NGENPDB文件夹压缩到7z / RAR文件中,将压缩文件上传到OneDrive,创建共享链接,然后在此处发布共享链接
magicandre1981

@ magicandre1981:感谢您提供一种可能的方法。可以在oneunified.net/files/rpb.20160102.WPR.7z中找到该文件。如果您看到了什么,可以发表您的方法吗?我确信周围的许多其他帖子都可以利用该技术。...再次感谢。
Raymond Burkholder

Answers:


26

使用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

此功能通过填充/读取某些模式(ntoskrnl.exe!RtlpGenericRandomPatternWorker)来测试内存是否有错误。

这是设计使然,在设备空闲时启动空闲维护任务时会发生。


谢谢你 这为这项活动提供了一些启示。既然您提到了空闲一词,就可以进行两个注释。1)您评估的ETI文件是在控制台上处于活动状态时制作的,“系统和压缩内存”的cpu约为10%到15%,并最终结束。这样我就能捕捉到某种活动。您已将其评估为空闲维护。2)在接下来的评论....
雷蒙德·伯克霍尔德

10
对于关闭,在Win 10上,我转到:开始->控制面板->管理工具->任务计划程序任务计划程序库-> Microsoft-> Windows-> MemoryDiagnostic有两个行项目。任务的运行可能取决于日志事件。我不确定它们是否必须存在,或者是否在输入日志时触发。我禁用了RunFullMemoryDiagnosticEntry。几分钟后,我不再看到5%到12%的利用率。在“任务”的属性中,在“设置”选项卡上,可以将内容调整为不经常运行。....再测试一次。
Raymond Burkholder

2
很高兴听到它解决了您的问题。
magicandre1981 '16

1
为了补充说明,我定义了2个任务-RunFullMemoryDiagnostic和ProcessMemoryDiagnosticEvents,最重要的是第二个。它启用了4个触发器-“日志:系统,源:应用程序弹出窗口”,“日志:应用程序,源:应用程序错误”和另外两个。禁用这两个触发器可以解决我的问题,问题是我正在开发的某些应用程序写入事件日志错误,这会导致内存检查。剩下的两个触发器与系统完全相关,因此最好不要禁用它们
zihotki

3
好吧,一个巨魔投票了。是的,xperf / WPR / WPA是500级专家,所以不适合您未受过教育的愚蠢巨魔 facepalm
magicandre1981

9

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

被压缩的内存是

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

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

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

  • 在Windows 10之前,它将很快被写入页面文件,而物理页面将被移至“待机”页面列表。这是通过系统进程中的“修改后的页面编写器”线程完成的。

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

所以,真的,这是一件好事。但是,在Windows 10之前,您看到的系统进程占用的额外内存要多得多,而修改后的页面列表或备用列表上的内存大约是该内存的两倍。当然,它所占用的空间不会比以前更多。

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


在进程浏览器中,没有加载调试符号,我确实得到了一些东西:ntoskrnl.exe!CcCopyWriteWontFlush + 0xb50如果添加符号,会产生更多细节吗?有12个实例,其中1个实例要求12.5%的cpu。它属于系统进程。
Raymond Burkholder

@RaymondBurkholder您可以通过查看线程的堆栈来获取更多信息。
Daniel

@DanielB:是的,这是从“进程”中的“线程”选项卡中通过在“进程资源管理器”中以PID 4查看系统进程的属性而得出的。说明:堆栈按钮未显示任何内容,但“模块”按钮指示它来自日期为2015-11-22的文件ntkmlmp.exe。我认为这是该额外CPU开始的大概日期。
Raymond Burkholder

这只是Windows更新最后一次影响此文件的日期。毕竟,它是系统组件。
Daniel

@RaymondBurkholder没有配置符号的“ StartAddress”显示只是没有用。当您看到符号名称(例如“ CcCopyWriteWontFlush”)加上偏移量(“ + 0xb50”)时,几乎可以肯定该符号名称是错误的。您想要的是例如ntoskrnl.exe!ExpWorkerThread,不显示偏移量。哦...您会看到MS不提供符号的模块的偏移量-几乎总是这些都是第三方驱动程序。它们显示为moduleName + offset,如nvhda64v.sys + 0x30ac。我们无法获得这些符号,但是仅模块名称通常对调试情况很有帮助。
Jamie Hanrahan'1

3

它可能是“杀手网络管理器”软件。如果卸载它,问题将消失,但是网络也将消失,因为它也将卸载网络适配器驱动程序。好消息是,有一个修复程序。

首先,请访问http://www.killernetworking.com/support/driver-downloads/item/killer-suite并下载新版本,但尚未安装。只需保存它,然后知道文件的位置。

然后,通过控制面板卸载当前版本。您将必须重新启动计算机。备份计算机后,请运行新的软件安装程序。2016年1月发布的新版本似乎没有相同的问题。

我认为该软件的旧版本存在导致此问题的内存泄漏。

只是一个国际象棋,“杀手网络管理器”软件是高通Aethos Killer Wireless-AC / Wireless-N和有线E2200 / E2400网卡的一部分。没有软件,您就无法上网。


没有驾驶员,您将无法上网。你可以得到没有所有的毫无意义的废话和英国媒体报道,司机,制造商认为你所需要的。您所链接的页面底部为您提供了killernetworking.com/support/driver-downloads/standard-drivers
Mokubai

2

在最近升级到Windows 10之后,我遇到了类似的问题。鼠标突然突然停转,即在我将鼠标移过屏幕时出现抖动,这使它非常难以使用。

我检查了任务管理器中的CPU使用情况,并注意到当“系统和压缩内存”进程开始消耗5-15%的CPU时,便出现了问题。我运行Process Explorer并检查了线程,就像Raymond一样,我注意到罪魁祸首是CcWriteCopyWontFlush,偏移量为0xb50。有点谷歌搜索使我转至此页面。我尝试按照此处的建议安装Windows符号,但是它没有帮助我解决偏移量。

这个问题也是零星的。我工作了几个小时,然后它开始出现了几分钟,无论是断断续续,都让我发疯了。重新启动会使它固化一段时间,然后返回。

从这里的答案中,我决定在PC上查找驱动程序,因此我从Device Manager开始,这就是我得到答案的地方。发生问题时,“设备管理器”窗口将不断变黑并刷新,就像每秒或每两秒刷新一次。这基本上是不可读的。更多Google搜索建议连接和重新连接外部USB设备。我将其连接到三星手机,每天通过连接到USB端口的电缆从PC对其充电。我还使用PC和MyPhoneExplorer将手机与Outlook同步,因此我使用三星PC驱动程序将几个驱动器映射到手机的内部和外部RAM。我可以看到这些驱动器在设备管理器中频繁出现和消失。

我的手机是Galaxy S2,大约有4年的历史,并且在microUSB端口上出现连接问题已有一年多了。这可能是造成问题偶发的原因,也可能是我手机上糟糕的三星PC驱动程序。如果只是电缆,我不知道为什么重新启动能在一段时间内解决问题,所以还是有点神秘,但至少我知道来源,并且可以解决。

断开手机的连接是解决问题的最简单方法,而且由于手机太旧了,我还是打算放弃它。所以我想知道雷蒙德是否也有一个三星设备驱动程序,并且在他的PC上运行类似的软件。雷蒙德,如果您仍在办理入住手续,请告诉我。

正如我所提到的那样,电缆已经很久没用了,因为从Windows 7升级到Windows 10之前,而且三星软件一直都很糟糕,但是在Windows 7中,脆弱性并没有影响我的其他PC操作。在Windows 10中,它使鼠标变得如此生涩,以至于几乎无法使用。我在尝试着陆时非常费劲,而且我认为键盘也因为缺少按键而受到影响。这些因素是如何相互关联的,这很奇怪,我不知道对微软提出什么改进Windows 10的建议,但是我现在觉得Windows 10有点“精致”。请谨慎使用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.