系统中断占用 CPU 高怎么解决
系统中断(System Interrupts)不是一个程序,它是任务管理器里的一行,显示 CPU 花在响应硬件上的时间,也就是设备需要处理时驱动程序响应的那部分代码。数字低是正常的,写这篇文章时量了一台闲着的笔记本,不到 1%。电脑没干什么活,它却一直保持几个百分点甚至更高,通常是某个驱动或者设备的问题,要做的就是把它找出来,这一行结束不了,磁盘上也没有叫系统中断的东西。
这个数字是什么意思
设备需要处理时会打断处理器,比如网卡收到了数据包,音频设备要下一段缓冲,Windows 会立刻运行驱动的中断例程,微软的驱动文档说 这些例程必须尽快执行完,所以剩下的活交给延迟过程调用(DPC),稍后以低于中断、但高于普通程序的优先级运行,系统中断统计的就是这些时间。
所以它带来的影响比数字看起来大,一个核上跑着 DPC 或者中断例程时,那里的普通线程都得等,慢的驱动就会表现成音频爆音、鼠标卡顿或者掉帧。
量一下,任务管理器每秒才采样一次,数字还是四舍五入的:
(Get-Counter '\Processor(_Total)\% DPC Time', '\Processor(_Total)\% Interrupt Time' -SampleInterval 2 -MaxSamples 5).CounterSamples | ForEach-Object { '{0} {1:N2}' -f $_.Path, $_.CookedValue }
核对这篇文章时,一台闲着的 Windows 11 ThinkPad 上这两项都是 0.38。官方没有给出上限,大致可以这么看,电脑闲着时任何一项持续超过 5%,就值得查一查。
找到驱动
先想什么变了,再拔设备,最后才测量。
- 拔掉不需要的东西,USB 集线器、摄像头、音频接口、扩展坞、打印机,每拔一个看一分钟,有问题的 USB 设备是最常见的原因之一,这一步也没有成本。
- 想想什么变了,开始之前是不是更新过驱动或者 Windows?在“设备管理器”里打开设备的“属性 › 驱动程序”,试试“回退驱动程序”。
- 在设备管理器里一个个禁用可疑设备,先是 Wi-Fi 和蓝牙适配器,再是音频,然后是除了显卡和磁盘以外的其他设备,每次看一分钟,再启用回来。
- 还没答案就用 LatencyMon 测量,这个来自 Resplendence 的免费工具 会按驱动报告 DPC 和 ISR 的时间,在问题发生时跑几分钟,到 Drivers 页按最高执行时间排序,列出来的文件比如网络的
ndis.sys或者厂商的音频驱动,就告诉你该往哪里查。 - 需要更多细节时录一份跟踪,Windows 自带微软的 Windows Performance Recorder,需要管理员终端:
wpr -start CPU
wpr -stop interrupts.etl
症状持续一分钟后停止,再用 Windows Performance Analyzer 打开文件,看 DPC/ISR 图表。
驱动名字通常说明什么
| 驱动或设备 | 常见原因 | 可以试试 |
|---|---|---|
ndis.sys、Wi-Fi 或以太网驱动 |
网卡驱动,或者上层的 VPN、过滤软件 | 从电脑或芯片厂商更新,关掉 VPN 测试 |
HDAudBus.sys、RtkHDAud.sys、USB 音频 |
音频驱动 | 从电脑厂商更新,或者换一个输出试试 |
USBPORT.SYS、USBXHCI.SYS |
某个 USB 设备或集线器有问题 | 一个个拔设备,换个接口 |
nvlddmkm.sys、amdkmdag.sys、igdkmd64.sys |
显卡驱动 | 从显卡或电脑厂商干净地更新 |
storport.sys、stornvme.sys |
磁盘或存储驱动 | 更新固件,检查硬盘健康 |
ACPI.sys |
固件或电源管理 | 从电脑厂商更新 BIOS 或 UEFI |
笔记本优先去电脑厂商的支持页面,那里的驱动是为这台硬件做的。什么都拔了,驱动是新的,也干净地重启过,数字还是很高,硬件确实可能有问题,摔过或者进过水时尤其如此。这时可以试试 Linux 启动盘,那里还是卡的话,Windows 驱动的嫌疑就小了。
不要这样做
- 不要找办法结束它,这一行背后没有进程,任务管理器也没东西可停。
- 不要装驱动更新工具,它们常常给笔记本挑错版本,这可能正是你要解决的问题。
- 不要照论坛帖子在注册表里改中断或者 MSI 设置,改错了可能开不了机。
- 不要花钱买“系统优化”软件,它修不了驱动的 bug,还多了自己的后台活。
Mole 能做什么
Mole for Windows 不列系统中断,状态页读的是真实进程,这一行不是进程,Mole 也没有驱动工具,它的用处是排除另一头,状态页里有进程确实在拼命干活的话,问题可能就在那个进程,先看 Windows CPU 占用高怎么查,没有进程能解释这些占用,就按上面的步骤来。任务管理器里其他不是普通程序的行,可以看 系统空闲进程。
常见问题
任务管理器里的系统中断是什么?
是 CPU 运行驱动代码响应硬件的时间,显示成一行,它没有文件,背后也没有程序。
系统中断占多少 CPU 算正常?
闲着时通常远低于 1%,网络或磁盘很忙时会短暂升高,电脑闲着却一直保持几个百分点,就值得查一查。
可以禁用系统中断吗?
不可以,它不是服务也不是程序,它报告的是硬件需要处理的工作,要解决的是造成它的驱动或设备。
系统中断是病毒吗?
不是,恶意软件确实可能运行自己的驱动,不过很少见,LatencyMon 列出了不认识的驱动时,用 Microsoft Defender 扫一遍就好。
系统中断为什么会让音频爆音?
这些代码优先于普通程序运行,慢的驱动会让那个核上的音频程序赶不上下一段缓冲,LatencyMon 就是为这种情况做的,能列出驱动名字。