# Windows でシステム割り込みの CPU 使用率が高い原因

システム割り込み（System Interrupts）はプログラムではありません。ハードウェアへの応答、つまりデバイスが注意を求めたときに反応するドライバーのコードに使われたCPU時間を示す、タスク マネージャーの行です。低い数値は正常で、このページのために測ったアイドル状態のノートPCでは1%未満でした。静かなPCで数%以上が続くなら、たいていドライバーかデバイスが原因なので、その1つを見つけるのが解決策です。この行は終了できず、ディスク上にシステム割り込みという名前のものもありません。

## その数字の意味

デバイスは何かが必要になるとプロセッサーに割り込みます。ネットワーク カードにパケットが届いた、オーディオ デバイスが次のバッファーを必要としている、といった場合です。Windowsはすぐにドライバーの割り込みルーチンを実行します。Microsoftのドライバーのドキュメントによると、[これらのルーチンはできるだけ速く実行する必要がある](https://learn.microsoft.com/en-us/windows-hardware/drivers/kernel/introduction-to-dpc-objects)ため、残りの処理は遅延プロシージャ コール（DPC）に引き渡されます。DPCは少し後に、割り込みより低い優先度で、ただし通常のプログラムよりは先に実行されます。システム割り込みはこの時間を合計したものです。

だから数値以上に響きます。DPCや割り込みルーチンがコアで動いている間、そこにある通常のスレッドは待たされるので、遅いドライバーは音の乱れ、マウスのカクつき、フレーム落ちとして現れます。

タスク マネージャーは丸めて、1秒に1回しかサンプリングしないので、測ってみてください。

```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でした。公式な上限はありませんが、おおまかな目安として、静かなPCでどちらかが5%を超えて続くなら調べる価値があります。

## ドライバーを見つける

まず何が変わったかを考え、次にデバイスを外し、それから測ります。

1. **不要なものをすべて抜く**。USBハブ、Webカメラ、オーディオ インターフェイス、ドッキング ステーション、プリンターです。1つ抜くごとに1分ほど数値を見ます。故障したUSBデバイスは定番の原因で、この手順は無料です。
2. **何が変わったかを考える**。始まる直前にドライバーかWindowsの更新がありましたか。**デバイス マネージャー**でそのデバイスの**プロパティ › ドライバー**を開き、**ドライバーを元に戻す**を試します。
3. デバイス マネージャーで**疑わしいものを1つずつ無効にする**。まずWi-FiとBluetoothのアダプター、次にオーディオ、それからディスプレイとディスク以外のものです。1分見たら、また有効にします。
4. まだ答えが出なければ**LatencyMonで測る**。Resplendenceのこの無料の[ツール](https://www.resplendence.com/latencymon)は、ドライバーごとのDPC時間とISR時間を報告します。問題が起きている間に数分間実行し、**Drivers**タブを実行時間の長い順に並べて読みます。ネットワークなら`ndis.sys`、あるいはベンダーのオーディオ ドライバーのように、そこに出るファイル名が探す場所を教えてくれます。
5. もっと詳しく知りたいときは**トレースを記録する**。MicrosoftのWindows Performance RecorderはWindowsに含まれていて、管理者のターミナルが必要です。

```powershell
wpr -start CPU
wpr -stop interrupts.etl
```

症状が出てから1分後に止め、ファイルをWindows Performance Analyzerで開いて、**DPC/ISR**のグラフを見ます。

## ドライバー名が示すもの

| ドライバーまたはデバイス | よくある原因 | 試すこと |
| --- | --- | --- |
| `ndis.sys`、Wi-FiまたはEthernetのドライバー | ネットワーク ドライバー、またはその上のVPNやフィルター | PCまたはチップのメーカーから更新し、VPNをオフにして試す |
| `HDAudBus.sys`、`RtkHDAud.sys`、USBオーディオ | オーディオ ドライバー | PCメーカーから更新するか、別の出力で試す |
| `USBPORT.SYS`、`USBXHCI.SYS` | USBデバイスやハブの不調 | デバイスを1つずつ抜き、別のポートを試す |
| `nvlddmkm.sys`、`amdkmdag.sys`、`igdkmd64.sys` | グラフィックス ドライバー | GPUまたはPCのメーカーからクリーン インストールで更新する |
| `storport.sys`、`stornvme.sys` | ディスクまたはストレージのドライバー | ファームウェアを更新し、ドライブの状態を確認する |
| `ACPI.sys` | ファームウェアや電源管理 | PCメーカーからBIOSまたはUEFIを更新する |

ノートPCでは、そのハードウェア向けに作られているので、まずPCメーカーのサポート ページを使ってください。すべて抜き、ドライバーが最新で、クリーンに再起動してもまだ数値が高いなら、特に落としたり水をこぼしたりしたあとは、ハードウェアが原因の可能性が十分にあります。ここではLinuxのライブUSBが役立ちます。そこでもマシンがカクつくなら、原因がWindowsのドライバーである可能性は低くなります。

## やってはいけないこと

- 終了する方法を探さない。この行の背後にプロセスはなく、タスク マネージャーには止めるものがありません。
- ドライバー更新ユーティリティを入れない。ノートPCに合わないビルドを選ぶことが多く、直したい問題そのものになりえます。
- フォーラムの投稿にある割り込みやMSIの設定をレジストリで変更しない。値を誤ると、PCが起動しなくなることがあります。
- 「システム最適化ツール」にお金を払わない。ドライバーのバグは直せず、それ自身のバックグラウンド処理が増えます。

## Moleでできること

Mole for Windowsはシステム割り込みを一覧にしません。ステータスは実在のプロセスを読むもので、この行はそうではないからです。ドライバーのツールもありません。役立つのは、もう一方を除外することです。ステータスで実際に忙しく動いているプロセスが見つかれば、そのプロセスが問題かもしれないので、まず[WindowsでCPU使用率が高いとき](/ja/windows/blog/windows-high-cpu-usage)を読んでください。負荷を説明するプロセスがないなら、上の手順が正しい道です。通常のプログラムではない、ほかのタスク マネージャーの行については、[システム アイドル プロセス](/ja/windows/blog/system-idle-process-high-cpu)を参照してください。

## よくある質問

### タスク マネージャーのシステム割り込みとは？

ハードウェアに応答するドライバーのコードの実行にCPUが使った時間を、1行にして表示したものです。ファイルはなく、背後にプログラムもありません。

### システム割り込みはCPUをどれくらい使うべき？

アイドル時は通常1%を大きく下回り、ネットワークやディスクの負荷が高いときは一時的に上がることがあります。静かなPCで数%が続くなら、調べる価値があります。

### システム割り込みを無効にできる？

できません。サービスでもプログラムでもなく、ハードウェアが必要とする処理を報告しているので、直すべきはその原因のドライバーかデバイスです。

### システム割り込みはウイルス？

違います。マルウェアが自前のドライバーを動かすことはありますが、まれです。LatencyMonが見覚えのないドライバーを示したなら、Microsoft Defenderでスキャンするのが妥当です。

### システム割り込みで音が乱れるのはなぜ？

そのコードは通常のプログラムより先に実行されるため、遅いドライバーがあると、そのコアのオーディオ プログラムが次のバッファーに間に合わなくなります。LatencyMonはこのケースのために作られていて、ドライバーを特定してくれます。


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