要诊断CPU的使用问题,应该使用Event Tracing for Windows (ETW)来捕获CPU采样数据/Profile.
要捕获数据,请安装Windows Performance Toolkit,它是Windows SDK的一部分.
Windows 10 WPT可以在Windows 8/Server 2012、Windows 8.1/Server 2012R2和Windows 10/Server 2016上使用。如果你还在使用Windows 7,请使用SDK/WPT with Build 15086。
(其他项都可以不选)
现在运行WPRUI.exe
,选择First Level
,在资源项下选择CPU使用率,然后点击开始。1分钟后,点击保存。
现在用Windows性能分析器分析生成的ETL文件,通过拖动CPU Usage (sampled)
图到analysis pane
中,像图中所示的列排序:
在WPA里面,加载调试符号,展开SYSTEM进程的Stack。在这个演示中,CPU的使用量来自于nVIDIA驱动
在下面的演示中,CPU的使用量来自于Realtek网卡驱动:
当你看到像ntoskrnl.exe! **的调用,如ntoskrnl.exe! Verifier* KeLeaveCriticalRegion,这意味着你启用了驱动验证器。这也会对性能造成很大的伤害,并导致系统使用率很高。關閉驅動程式驗證器 ](https://msdn.microsoft.com/en-us/windows/hardware/drivers/devtest/driver-verifier#howtocontroldv) 並重新開機。在这个演示中,驱动iai2ce.sys
(Intel Serial IO GPIO控制器驱动)导致了这个问题。 CPU的使用是由broadcom网络驱动rtsuvc.sys
当你把Realtek UVC webcam Driver
看成原因时,就比较麻烦了。这意味着内核中的函数在内存被清零后才可以再次使用,导致CPU使用率高:
目前还没有办法真正检测出是哪个进程导致的,但我知道如果你在Chrome浏览器中启用了硬件加速功能,Chrome浏览器也会导致。所以,如果你看到这个问题并使用Chrome浏览器,请关闭Chrome浏览器中的硬件加速功能。
当你看到那些ntoskrnl.exe!RtlpGenericRandomPatternWorker、ntoskrnl.exe!RtlpTestMemoryRandomUp调用
时,CPU的使用量来自于内核测试内存的问题(memtest)。这个使用量是通过Windows8.1/10的空闲维护任务触发的。你可以使用任务调度器来禁用空闲任务。 在Windows 10中,这个任务被称为RunFullMemoryDiagnostics,在Microsoft ⁄ Windows ⁄ MemoryDiagnostic ⁄ MemoryDiagnostic ⁄ RunFullMemoryDiagnostic下。
在下面的演示中,涉及到了Citrix驱动:
所以请联系IT人员解决Citrix的问题。 0端口对一些用户有帮助。
在这种情况下,少量的系统使用量来自于Acronis驱动ignis.sys
:
在这个演示中,CPU使用量bcmwl664.sys
和ntoskrnl.exe!MiZeroWorkerPages
.
所以一个驱动使用SpinLocks.aspx)非常多。在看到有的设备/驱动会出现这种情况时,请禁用一些设备/驱动,直到看到有的设备/驱动会出现这种情况为止。
在这种情况下,CPU的使用量是由驱动Data Deduplication
造成的,这是dedup.sys!DdpPostCreate
驱动。所以,如果你在栈中看到驱动,请更新驱动。
这里的CPU占用率来自于扫描主机文件(netbt.sys!DelayedScanLmHostFile)
确保你的主机文件不要太大,以免造成这种占用。
这种情况下,CPU的使用量来自于symantec的athrx.sys
。在这里,CPU的使用量来自于AMD的GPU驱动(attikmdag.sys)
如果你看到这个,请到AMD网站上获取最新的AMD卡的驱动。
这里的驱动TMXPFlt.sys和VsapiNt.sys导致CPU使用率高。
从我看到的情况来看,这些文件是趋势科技AV套件的一部分。更新工具或删除它。
在本例中,CPU的使用情况来自于函数usbhub.sys!UsbhPortRecycle
这个函数获取有关分页文件的信息。该例程返回当前活动的分页文件的信息。
禁用该分页文件,重启后再启用,看是否能解决这个问题。另外,删除Intel服务(如Intel Content Protection HECI服务)[似乎对一个用户来说已经解决了](https://msdn.microsoft.com/en-us/library/windows/hardware/ff548114(v=vs.85). 只有在这里,我们才能得到调试符号来查看函数名称为tdrpm251.sys
的调用栈。
这里,你应该安装Intel最新的驱动来解决。
最复杂的情况是ACPI.sys在调用栈中的使用情况:
Line #, DPC/ISR, Module, Stack, Count, Process, Weight (in view) (ms), TimeStamp (s), % Weight
6, , , | |- ACPI.sys!ACPIWorkerThread, 40246, , 39.992,941063, , 4,13
7, , , | | ACPI.sys!RestartCtxtPassive, 40246, , 39.992,941063, , 4,13
8, , , | | ACPI.sys!InsertReadyQueue, 40246, , 39.992,941063, , 4,13
9, , , | | ACPI.sys!RunContext, 40246, , 39.992,941063, , 4,13
10, , , | | ntoskrnl.exe!KeReleaseSpinLock, 40246, , 39.992,941063, , 4,13
11, , , | | ntoskrnl.exe!KiDpcInterrupt, 40246, , 39.992,941063, , 4,13
12, , , | | ntoskrnl.exe!KiDispatchInterruptContinue, 40246, , 39.992,941063, , 4,13
13, , , | | ntoskrnl.exe!KxRetireDpcList, 40246, , 39.992,941063, , 4,13
14, , , | | ntoskrnl.exe!KiRetireDpcList, 40246, , 39.992,941063, , 4,13
15, , , | | |- ntoskrnl.exe!KiExecuteAllDpcs, 40198, , 39.945,173325, , 4,13
16, , , | | | |- ACPI.sys!ACPIInterruptDispatchEventDpc, 27565, , 27.408,930428, , 2,83
17, , , | | | | |- ACPI.sys!ACPIGpeEnableDisableEvents, 24525, , 24.384,921620, , 2,52
18, , , | | | | | ACPI.sys!ACPIWriteGpeEnableRegister, 24525, , 24.384,921620, , 2,52
19, , , | | | | | |- hal.dll!HalpAcpiPmRegisterWrite, 24421, , 24.281,015516, , 2,51
20, , , | | | | | | |- hal.dll!HalpAcpiPmRegisterWritePort, 24166, , 24.027,316013, , 2,48
这是极难调试的。在sysinternals话题中,我列出了一些建议:
–确保CPU不会因为CPU风扇中的灰尘而过热
–更新或重新刷新(相同的)BIOS/UEFI
–加载默认的BIOS/UEFI设置
–确保电池没有损坏,从笔记本上取下电池或在设备管理器中禁用电池。
- 更改跳线 在HDD caddy上 如果你已经用Caddy替换了DVD/蓝光驱动器,在旧的HDD旁边安装一个SSD
下面的情况是由驱动ntoskrnl.exe!KeAcquireSpinLockRaiseToDpc
这似乎是音频流驱动造成的。所以,如果在WPA中看到这个软件/驱动,请更新这个软件/驱动。
如果在SYSTEM的callstack中看到有一个叫ntoskrnl.exe!KeReleaseSpinLock
的驱动导致CPU占用率很高,请更新Ricoh PCIe SDXC/MMC主机控制器驱动,或者在设备管理器中禁用SD读卡器,如果没有驱动更新解决的话,请更新Ricoh PCIe SDXC/MMC主机控制器驱动。
用户@stevemidgley 显示的是L1C62x64.sys
这里可以看到一个驱动 UDE.sys 导致的新问题,CPU占用率较高。在符号集线器中
我可以看到它属于Modem驱动,跟踪的PNP数据显示qualcomm atheros AR8171/8175 PCI-E gigabit Ethernet
(LTE调制解调器)可能的设备:
,解决的办法是在设备管理器中禁用调制解调器和USB复合设备。