# 系统中断占用 CPU 高怎么解决

系统中断（System Interrupts）不是一个程序，它是任务管理器里的一行，显示 CPU 花在响应硬件上的时间，也就是设备需要处理时驱动程序响应的那部分代码。数字低是正常的，写这篇文章时量了一台闲着的笔记本，不到 1%。电脑没干什么活，它却一直保持几个百分点甚至更高，通常是某个驱动或者设备的问题，要做的就是把它找出来，这一行结束不了，磁盘上也没有叫系统中断的东西。

## 这个数字是什么意思

设备需要处理时会打断处理器，比如网卡收到了数据包，音频设备要下一段缓冲，Windows 会立刻运行驱动的中断例程，微软的驱动文档说 [这些例程必须尽快执行完](https://learn.microsoft.com/en-us/windows-hardware/drivers/kernel/introduction-to-dpc-objects)，所以剩下的活交给延迟过程调用（DPC），稍后以低于中断、但高于普通程序的优先级运行，系统中断统计的就是这些时间。

所以它带来的影响比数字看起来大，一个核上跑着 DPC 或者中断例程时，那里的普通线程都得等，慢的驱动就会表现成音频爆音、鼠标卡顿或者掉帧。

量一下，任务管理器每秒才采样一次，数字还是四舍五入的：

```powershell
(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%，就值得查一查。

## 找到驱动

先想什么变了，再拔设备，最后才测量。

1. **拔掉不需要的东西**，USB 集线器、摄像头、音频接口、扩展坞、打印机，每拔一个看一分钟，有问题的 USB 设备是最常见的原因之一，这一步也没有成本。
2. **想想什么变了**，开始之前是不是更新过驱动或者 Windows？在“设备管理器”里打开设备的“属性 › 驱动程序”，试试“回退驱动程序”。
3. **在设备管理器里一个个禁用可疑设备**，先是 Wi-Fi 和蓝牙适配器，再是音频，然后是除了显卡和磁盘以外的其他设备，每次看一分钟，再启用回来。
4. **还没答案就用 LatencyMon 测量**，这个来自 [Resplendence 的免费工具](https://www.resplendence.com/latencymon) 会按驱动报告 DPC 和 ISR 的时间，在问题发生时跑几分钟，到 Drivers 页按最高执行时间排序，列出来的文件比如网络的 `ndis.sys` 或者厂商的音频驱动，就告诉你该往哪里查。
5. **需要更多细节时录一份跟踪**，Windows 自带微软的 Windows Performance Recorder，需要管理员终端：

```powershell
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 占用高怎么查](/zh/windows/blog/windows-high-cpu-usage)，没有进程能解释这些占用，就按上面的步骤来。任务管理器里其他不是普通程序的行，可以看 [系统空闲进程](/zh/windows/blog/system-idle-process-high-cpu)。

## 常见问题

### 任务管理器里的系统中断是什么？

是 CPU 运行驱动代码响应硬件的时间，显示成一行，它没有文件，背后也没有程序。

### 系统中断占多少 CPU 算正常？

闲着时通常远低于 1%，网络或磁盘很忙时会短暂升高，电脑闲着却一直保持几个百分点，就值得查一查。

### 可以禁用系统中断吗？

不可以，它不是服务也不是程序，它报告的是硬件需要处理的工作，要解决的是造成它的驱动或设备。

### 系统中断是病毒吗？

不是，恶意软件确实可能运行自己的驱动，不过很少见，LatencyMon 列出了不认识的驱动时，用 Microsoft Defender 扫一遍就好。

### 系统中断为什么会让音频爆音？

这些代码优先于普通程序运行，慢的驱动会让那个核上的音频程序赶不上下一段缓冲，LatencyMon 就是为这种情况做的，能列出驱动名字。


Canonical: https://mole.fit/zh/windows/blog/system-interrupts-high-cpu
