高CPU利用率Ntoskrnl.exe文件windows10中的(系统)进程
在一台新安装了Windows10的电脑上,一位用户开始抱怨操作系统经常挂断和工作缓慢。任务管理器显示, 系统ntoskrnl.exe进程使用了大约50%的CPU资源 。
在本文中,我将尝试通过不同的进程描述CPU利用率高的主要诊断方法,以及找出问题的Windows组件或者系统驱动程序的方法。
系统进程占用系统一半以上CPU资源的情况不正常。 Ntoskrnl.exe是操作系统内核的可执行文件。它是系统的核心过程。操作系统内核运行设备的系统驱动程序,这很可能是问题的根源(并非所有驱动程序都经过硬件开发人员的适当测试)。
通常,在安装新硬件、新驱动程序版本(包括自动驱动程序更新,可以禁用)或者在Windows更新之后,都会出现驱动程序代码泄漏和CPU、内存或者磁盘资源使用率高的问题。
提示。在某些情况下,CPU和内存的高负载会导致压缩内存进程。
要了解哪个驱动程序或者模块导致CPU利用率高,可以使用免费工具 Process Explorer。下载并以管理员身份运行。
在正在运行的进程列表中找到 系统,右击打开 属性。
进入 进程选项卡。按照CPU使用率(CPU列)对内核加载的模块列表进行排序。在 起始地址栏中,显示了一个组件或者驱动程序的名称,这会导致高负载(下面的屏幕截图不是来自问题系统,在我的例子中是ntoskrnl.exe文件过程)。
要找出导致高CPU负载的驱动程序,我们还可以使用免费的Microsoft工具 kernrate.exeKernrate查看器)。该工具是 WDK(Windows设备工具包)的一部分。安装WDK后,我们可以在文件夹…\Tools\Other\amd64中找到该工具。
不带参数运行 kernrate.exe,等待数据采集完毕(10-15分钟),按 Ctrl-C终止工具,查看 内核模式结果部分的模块列表。
如我们所见,在我们的示例中 b57nd60x模块导致了高CPU使用率。使用Google或者 Sigcheck工具(参见使用Sigcheck检测模块相关驱动文件的例子),可以检测到问题是由Broadcom NetXtream Gigabit Ethernet NDIS6.0驱动程序引起的。
我们还可以使用Windows Performance Toolkit(WPT)分析系统引导期间的CPU使用情况。我们必须安装WPT并在 Windows性能记录器(一级三角形+CPU使用->启动)图形控制台中运行数据采集。
也可以使用以下命令开始收集数据进行分析:
xperf -on latency -stackwalk profile -buffersize 1024 -MaxFile 256 -FileMode Circular && timeout -1 && xperf -d cpuusage.etl
如果启动后系统挂起,并且无法其中工作,则建议使用此方法。这篇关于Windows启动缓慢的诊断方法的文章也可能对你有用。
必须保存文件并在Windows性能分析器(WPA)中打开它。展开系统进程堆栈。在这个例子中,我们可以看到 athrx.sys驱动程序(Atheros无线网络适配器)导致CPU负载过高。
因此,问题驱动程序被检测到。下一步是什么?
若要解决此问题,请安装更高版本(或者更旧版本)的驱动程序,或者如果任何驱动程序版本的问题仍然存在,则完全禁用(断开)硬件。更新后的驱动程序可以使用驱动程序验证器进行额外的压力测试。