Seeing System Interrupts high CPU usage in Windows Task Manager is one of the most misunderstood performance bottlenecks in modern systems. Most generic guides suggest trivial fixes like running a virus scan or using dangerous third-party "driver updater" tools.
To resolve high CPU utilization caused by System Interrupts, we must examine the Windows NT kernel (ntoskrnl.exe). System Interrupts is not a user-mode processβit is a visual placeholder representing the execution time of Interrupt Service Routines (ISRs) and Deferred Procedure Calls (DPCs) executing at elevated Interrupt Request Levels (IRQL).
---
Quick Diagnostic: Triage System Interrupts
If your system is unresponsive or dropping frames due to an interrupt storm, use this rapid triage baseline:
| Metric / Parameter | Normal Baseline | Fault State |
|---|
| **Idle CPU Usage** | 0.1% β 2.0% | Constant > 5.0% |
| **Single ISR Routine Duration** | < 25 microseconds ($\mu s$) | > 100 microseconds ($\mu s$) |
| **Single DPC Routine Duration** | < 100 microseconds ($\mu s$) | > 500 microseconds ($\mu s$) |
# Run PowerShell as Administrator to capture a 10-second DPC/ISR kernel trace via native Windows tools
wpr -start CPU -start DPC -filemode
Start-Sleep -Seconds 10
wpr -stop C:\KernelInterruptTrace.etl
*Note: The generated .etl file can be ingested directly into the Windows Performance Analyzer (WPA) to pinpoint the exact offending .sys binary.*
---
Deconstructing System Interrupts: What Task Manager Isn't Showing
In the Windows architecture, CPU execution time is split between user-mode threads and kernel-mode operations. When a physical device (such as an NVMe controller, GPU, or Wi-Fi card) requires immediate CPU attention, it raises an electrical signal known as a hardware interrupt.
Hardware Assertion ββ> DIRQL (ISR Execution) ββ> DISPATCH_LEVEL (DPC Queue) ββ> PASSIVE_LEVEL (User Threads)
[Hal.dll / Bus] [Short, atomic work] [Extended driver work] [App / Game Threads]
The System Interrupts Pseudo-Process
**System Interrupts is not a real executable.** It has no PID, no executable path on disk, and consumes no physical RAM. It is a synthetic counter provided by the Task Manager to aggregate the CPU time spent servicing hardware interrupts that preempt normal thread scheduling.
Because it is an abstraction of the kernel's lowest execution rings:
- You cannot right-click and "End Task" on System Interrupts.
- You cannot assign it an affinity mask or lower its priority class.
- Terminating the underlying operations would require crashing the OS via a bugcheck (DPC_WATCHDOG_VIOLATION or KMODE_EXCEPTION_NOT_HANDLED).
Interrupt Request Levels (IRQL) and CPU Preemption
The Windows kernel prioritizes work using **Interrupt Request Levels (IRQL)**. Thread scheduling (where user applications, background services, and even parts of the kernel run) happens at `PASSIVE_LEVEL` (IRQL 0) or `APC_LEVEL` (IRQL 1).
HIGH_LEVEL (IRQL 31 / 15) β² Machine Checks / Profiling
β
DIRQL (IRQL 3β26) β Device Interrupts (ISRs execute here)
β
DISPATCH_LEVEL (IRQL 2) β DPC Processing & Kernel Scheduler
β
PASSIVE_LEVEL (IRQL 0) β Standard User/Kernel Threads (Games, Apps)
When an interrupt occurs:
1. The CPU raises its execution state to DIRQL (Device IRQL).
2. All execution at lower IRQLsβincluding the thread scheduler itselfβis instantly suspended on that CPU core.
3. If a driver takes too long at DIRQL or DISPATCH_LEVEL, standard operating system threads starve, resulting in visual stuttering, audio crackling, and high CPU metrics in monitoring tools.
---
The Anatomy of an Interrupt: ISRs vs. DPCs
According to Microsoft Hardware Dev Center guidelines, well-behaved drivers must split interrupt handling into a two-stage pipeline: Interrupt Service Routines (ISRs) and Deferred Procedure Calls (DPCs).
1. Interrupt Service Routine (ISR)
The ISR executes at **DIRQL**. Its sole purpose is to acknowledge the hardware signal, clear the interrupt on the physical device register, save critical volatile state, and queue a DPC.
- **Target Execution Limit:** Less than **25 microseconds**.
- **Constraint:** Code running at DIRQL cannot allocate paged memory, wait on synchronization primitives, or access disk files.
Why System Interrupts Spikes: When a hardware driver misbehaves, it violates these execution limits. If an audio or network driver stays in its DPC loop for 5 milliseconds instead of 50 microseconds, the CPU is trapped at DISPATCH_LEVEL, and Task Manager reports a massive spike under System Interrupts.
---
Root Causes: Why System Interrupts Spike
ββββββββββββββββββββββββββββββββββββββββββ
β System Interrupts CPU Usage > 5% β
ββββββββββββββββββββ¬ββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββ
βΌ βΌ βΌ
βββββββββββββββββββββ βββββββββββββββββββββ βββββββββββββββββββββ
β Poorly Coded β β ACPI / C-State β β Physical Bus / β
β Driver Routines β β Interrupt Storms β β Hardware Faults β
β (.sys execution) β β (Firmware/Power) β β (PCIe, SATA, USB) β
βββββββββββββββββββββ βββββββββββββββββββββ βββββββββββββββββββββ
1. Unoptimized or Broken `.sys` Drivers
The most common cause is a third-party driver with unoptimized routines. Common culprits include:
- `nvlddmkm.sys` (NVIDIA GPU Kernel Mode Driver)
- `amdkmdag.sys` (AMD GPU Driver)
- `ndis.sys` / `rtwlanu.sys` (Network / Realtek Wi-Fi stacks)
- `storahci.sys` / `iaStorA.sys` (Storage AHCI/RAID controllers)
2. ACPI Power Management & Interrupt Storms
The **Advanced Configuration and Power Interface (ACPI)** specification defines how the OS manages device power states (C-states for processors, D-states for devices).
As outlined in official Intel and AMD ACPI implementation whitepapers, improper power-state transitions handled by ACPI.sys can trigger interrupt storms. An interrupt storm happens when a device continuously asserts a hardware interrupt line because the BIOS/UEFI firmware failed to balance power states (e.g., C-State Deep Package transitions vs. PCIe Link State Power Management).
3. Physical Hardware and Bus Contention
- **PCIe Active State Power Management (ASPM):** Misconfigurations can force a PCIe bus to cycle between `L0` (active) and `L1` (low power) states repeatedly, generating a constant barrage of interrupts.
- **SATA/NVMe Interface CRC Errors:** If a storage cable or bus lane is degraded, repeated packet transmission retries trigger continuous DPC executions.
- **Failing USB Peripherals:** A dying sensor on a mouse or a miswired USB hub can flood the Host Controller with malformed packets, forcing `USBPORT.SYS` to consume entire CPU cores.
---
Step-by-Step Kernel Isolation: Finding the Offending `.sys` Driver
To fix the problem, you must identify the specific kernel-mode binary executing the long-running DPCs and ISRs.
Method 1: Rapid Triage Using LatencyMon
LatencyMon checks system latency by monitoring DPCs and ISRs in real time.
- Download and run LatencyMon (free for diagnostic use).
- Click the green Start/Play button.
- Let it run until System Interrupts begins consuming excessive CPU.
- Navigate to the Drivers tab and sort by DPC count and Highest execution (ms).
Driver Name Highest Execution (ms) Total Execution (ms) Description
ndis.sys 4.238120 142.3021 Network Driver Interface
nvlddmkm.sys 0.892010 45.1209 NVIDIA Windows Kernel Mode Driver
ACPI.sys 0.021004 1.4201 ACPI Driver for NT
*In this example, ndis.sys spent 4.2ms in a single routineβover 40 times the Microsoft threshold. The network stack is the primary culprit.*
---
#### 1. Capture the Trace
Open an administrative command prompt and run:
xperf -on latency -stackwalk profile -buffersize 1024 -MaxBuffers 1024 -FileMode Circular -MaxFile 1024
*Reproduce the high CPU condition for 15β30 seconds, then stop the trace:*
xperf -d C:\DpcIsrTrace.etl
#### 2. Analyze the Kernel Trace in WPA
1. Open C:\DpcIsrTrace.etl in Windows Performance Analyzer (available in the Windows Assessment and Deployment Kit via Microsoft Learn).
2. Expand the Computation graph group in the left panel.
3. Drag the DPC and ISR Usage graph into the Analysis pane.
4. Configure the columns to display:
- Module (The specific .sys driver)
- Function (The specific kernel function executed)
- DPC Time (ms) / ISR Time (ms)
- Count
ββββββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββ¬βββββββββββββββ
β Module β Function β DPC Time (s) β
ββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββΌβββββββββββββββ€
β storport.sys β StorPortDpc β 12.842 β
β βββ iaStorAfs.sys β RaidDpcRoutine β 11.201 β
β ntoskrnl.exe β KiExecuteDpc β 0.450 β
ββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββ΄βββββββββββββββ
This pinpoint view reveals the exact driver layer and sub-routine generating excessive overhead.
---
Once you have identified the culprit driver or subsystem, apply the targeted fix:
Offending Module Identified
βββ Network (ndis.sys / rtwlanu.sys) ββ> Disable LSO/Energy Efficient Ethernet; Update via OEM
βββ Storage (iaStorA.sys / storahci) ββ> Disable HIPM/DIPM; Replace SATA cables; Check SMART
βββ Power (ACPI.sys) ββββββββββββββββββ> Update Motherboard BIOS/UEFI; Reset ASPM states
βββ Graphics (nvlddmkm / amdkmdag) ββββ> Clean install driver via vendor utility (No third-party updaters)
1. Fix Driver-Specific Overhead
- **Network Adapters (`ndis.sys` / `e1d.sys`):** Open Device Manager $\rightarrow$ Network Adapter Properties $\rightarrow$ Advanced. Disable **Large Send Offload (LSO)** and **Energy Efficient Ethernet (EEE)**. These features offload work to physical NIC silicon that, when bugged, can flood the CPU with re-synchronization interrupts.
- **Storage Drivers (`iaStorA.sys` / `storahci.sys`):** Check the health of your drives. High DPC latency here often indicates bad sectors triggering hardware retries. Disable aggressive Link Power Management (HIPM/DIPM) inside your power plan settings.
2. Clear ACPI Firmware Loops
If `ACPI.sys` is generating the interrupt load:
- **Flash the Motherboard BIOS/UEFI:** Microcode updates often patch broken ACPI table entries (`DSDT`/`SSDT`) that cause power state synchronization loops between the OS and chipsets.
- **Disable C-State Aggression:** In BIOS, change the global C-State configuration from auto-aggressive to standardized **C1E/C6**, or disable PCIe Native Power Management if the system bus is generating spurious Wake-On-LAN or PCIe bus interrupts.
3. A Critical Warning on "Driver Updaters"
Never download third-party "Driver Updater," "Driver Booster," or generic cleaning utilities to resolve System Interrupts.
These programs often inject incorrect .inf packages, bundle aggressive telemetry, and frequently install mismatched generic drivers that worsen DPC latency.
Safe driver hygiene:
1. Download directly from the original component manufacturer (Intel, AMD, NVIDIA, Realtek, or your motherboard vendor).
2. Use raw .inf installations via Windows Device Manager, or official standalone driver packages.
3. Rely on clean Windows Update catalogs rather than third-party modification utilities.