Windows 10 系统(ntoskrnl.exe)在机器空闲一段时间后占用 CPU

Windows 10 系统(ntoskrnl.exe)在机器空闲一段时间后占用 CPU

我注意到我的笔记本电脑的 CPU 开始被占用(使用率可能为 15%?)并且 CPU 风扇开始运转,通常是在晚上,当我的笔记本电脑闲置了 5 分钟左右的时候。使用 CPU 的进程是,System这并没有告诉我很多信息,所以我决定让 Process Explorer 继续运行并监控线程System。它又开始使用 CPU,这是我发现的:

进程探索系统

闲置几分钟后占用 CPU 的线程具有起始地址ntoskrnl.exe!RtlAvlRemoveNode+0x7ba0。因此,它似乎是系统的核心。有人知道是什么原因造成的吗?或者我如何进一步诊断它?我不喜欢我的 CPU 风扇像这样旋转,我想阻止系统这样做。

我甚至禁用了所有在空闲时触发的计划任务(使用 PowerShell 找到它们Get-ScheduledTask | Where-Object { $_.State -ne "Disabled" } | Select-Object TaskName, TaskPath, Triggers | Where-Object { $_.Triggers -match "MSFT_TaskIdleTrigger" }),但这种情况仍然发生。

答案1

线程的起始地址提到了RtlAvlRemoveNode。这是一个功能通过 调用ntoskrnl.exe。Rtl 代表运行时库,因此(最有可能,无需进一步了解)它通过本机应用程序调用(例如 autochk 程序)。如果您想了解更多背景信息,可以找到大量信息本网站。不过这只是起始地址,这个函数不一定会导致 CPU 时间占用。按“堆栈”按钮查看完整调用堆栈,或使用第三方工具,如进程线程视图

您有两个基本选择:

  • 尝试并解决的方法:例如,通过任务计划程序/安全模式等禁用应用程序,希望禁用正确的应用程序。(应用程序可能是屏幕保护程序、碎片整理程序、搜索索引等,最有可能但不一定是因 PC 空闲而触发的程序)

  • 分析方法:您可以进行进一步分析以查明问题,例如进一步分析有问题的线程或使用“Windows 性能工具包”来进一步识别导致 CPU 使用率的应用程序

由于分析方法需要大量知识,因此我建议采用试错法。虽然这只是有根据的猜测,但很可能您不是唯一遇到此问题的人,因此尝试最常见的解决方案应该是一种好方法。

如果你通过反复试验没有取得任何进展,那么你就必须转向更具分析性的方法。正如 HoD 在他的评论中所建议的那样,Windows 性能工具包是下一步的好选择。一旦您获得更多信息或遇到具体问题,您可以进一步说明您的问题,以便我们能够帮助您。

这种行为也可能是由恶意软件、错误、有问题的更新等引起的。请考虑到这一点,特别是当您使用反复试验方法时。

答案2

我可以在您的调用堆栈中识别出被调用的子系统是:

  • 移动多媒体通信系统 -mmcss.sys
  • DirectX 12 -dxgmms2.sys

我们可以看到其他低级实用函数调用,但我们不知道它们的调用者是谁,因此它们并没有提供太多信息。这里明确指出的高级子系统是 MMCSS 和 DirectX 12:

  • 多媒体类调度服务 (MMCSS):使多媒体应用程序优先访问CPU资源。
  • DirectX 12:可直接与您的视频和音频硬件配合使用的 Windows 软件。

因此,很明显,占用 CPU 的是一个带有图形组件的应用程序。这个 GUI 组件可能会也可能不会占用 CPU 的资源,但这里重要的结论是,这个应用程序确实有一个 GUI。

任务计划程序永远不会启动图形应用程序,因此这不是可行的方向。您需要找到由空闲条件触发的图形应用程序。

最明显的候选者是屏幕保护程序。我建议将其关闭以进行测试:

  • 右键单击桌面,选择个性化>锁定屏幕>屏幕保护程序设置,设置(None)为屏幕保护程序并单击确定。
  • 您可以在“控制面板”>“电源选项”>“更改计划设置”中,将“关闭显示器”设置为至少出现空白屏幕。

如果这没有帮助,您将需要找到另一个在空闲时执行不同操作的已安装图形应用程序。

答案3

这只是系统闲置一段时间后启动的 Windows 10 维护任务。

相关内容