GetStackLimits 空闲期间 ntoskrnl.exe 占用高 CPU

GetStackLimits 空闲期间 ntoskrnl.exe 占用高 CPU

我在 Windows 10 中遇到了一个奇怪的错误。

闲置 5 分钟后,我的 CPU 变得很高。我使用 Win Performance Analyzer 发现它发生在线程 GetStackLimits 上的 ntoskrnl.exe 中。

我已更新所有驱动程序,一切正常。所有空闲任务均已禁用并删除。我还运行了 sfc /scannow 和 chkdsk,没有出现任何错误。

当错误位于内核中时,我该如何找到它?!

答案1

我很久以前就找到了我的问题的答案,但忘了将其添加到这里。

它是 Windows 10 中的维护功能,称为:

运行全内存诊断

发现于:

\Microsoft\Windows\MemoryDiagnostic

禁用此功能后,我的维护任务就可以完成,而不仅仅是使用 CPU 来完成此任务。

我最近没有遇到任何内存问题或 BSOD,但我确实有 32GB 的内存,这可能对完成这项任务起到一定作用。

我确实运行了几个小时,但它从未完成,所以没有它我会更好。

不过还是感谢你的帮助!

答案2

不幸的是,我不知道当空闲条件消失时这种行为是否会停止,但对于引擎(微软的 AV 产品)运行 MRT 工具并疯狂扫描,这会导致在用户登录后短暂空闲后,在一段时间内(该工具需要运行其扫描)CPU 使用率很高。

如果在您执行诸如移动鼠标或触摸按键之类的操作后 CPU 使用率恢复正常,则可能就是发生了这种情况。

我发现使用 Process Explorer 最容易看到这一点。

如果当空闲状态停止时活动仍然很活跃,那就是另一回事了。

答案3

Martin,就我而言,这是由于启用了 Hyper-V(在从 Windows 8.1 升级到 10 之前)并且可能使用了与我的台式机系统附带的 Realtek PCIe GBE 系列(以太网)控制器不兼容的桥接网络连接造成的,我的台式机系统最初安装了 Windows 8.0。我使用 Hyper-V 的唯一原因是用于 Windows Phone 8 开发。我已经多年没有使用它了,但网络是在桥接连接上运行的,如果没有桥接,我永远无法让它工作。我对设置这些一无所知。Visual Studio 安装程序完成了所有 Hyper-V 和虚拟网络设置。

为了解决这个问题,我只需在“打开或关闭 Windows 功能”控制面板对话框中删除 Hyper-V,这会自动删除桥接连接。然后我花了几个小时才让我的直接以太网连接重新工作。诊断程序对此没有帮助。我最终求助于老办法,将路由器上使用的连接端口与另一个(四个中的)交换,Windows 终于可以再次看到我家网络上的其他计算机了。

为了帮助诊断问题,我使用 MagicAndre1981 的 xperf cmd 设置来生成 etl。(参见安装WPT。)然后我在“Windows Performance Analyzer”中打开此文件,并按照 MagicAndre1981 的示例添加“Stack”列。系统根目录下的模块名称给了我线索,它可能是 Hyper-V,正如我一直怀疑的那样。

答案4

当你的电脑空闲大约 4-5 分钟时,我发现这个 CPU 使用率的真正问题。

对我来说,它是任务调度程序...它很难找到,因为所有微软团队都喜欢让用户完全盲目,并且喜欢让那些没有安排任何事情的人进行空白的 Windows 恢复。

为获得最佳效果,请遵循以下说明:

  • 首先,下载 TWEAKBIT PC SUITE 10
  • 现在,在清理、抑制或删除你想要的所有内容之前,请转到 Tweakbit STARTUP MANAGER
  • 删除所有无用的启动程序
  • 找到任务管理器菜单
  • 在列表中,取消选中所有行(所有计划任务)!!!
  • 重新启动,完成!

第二种方法(仅限注册表):

1-转到“开始”>“运行”>“Regedit”

2-将以下注册表项设置为 0x0000004 (4)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Schedule\Start

您的 PC 绝不会因闲置而发热

对我来说,TweakBit 帮助我了解计算机的工作原理。

请毫不犹豫地分享其他方法来禁用任务计划程序中那些超过 CPU 使用率的操作。

希望这对你们有帮助。保重。

库德克斯。

相关内容