Mac maintenance
What Is 'kernel_task' on Mac and Should You Be Worried?
kernel_task on Mac can use 200%+ CPU and 8GB+ RAM. Here's what it actually is, why it spikes, and the real reasons for high kernel_task usage.
You’re trying to do something normal — export a video, run a build, watch a 4K stream — and your Mac suddenly slows to a crawl. Activity Monitor shows a process called kernel_task using 600% CPU. You can’t quit it. Restarting helps for a few minutes, then it’s back. Forum posts blame everything from malware to defective hardware to “an Apple conspiracy” to make older Macs unusable.
The truth about kernel_task is much simpler and much weirder than any of those. It’s the macOS kernel itself — process ID 0, the foundation of everything else running on your Mac. And when it’s eating CPU, it’s almost always doing so on purpose, as a deliberate response to something in the system needing slowdown. Understanding why it does that is the difference between trying random fixes that won’t help and addressing the actual cause.
What kernel_task Is
In Activity Monitor, every process you see runs in userspace — your apps, system services, helpers, daemons. The kernel itself isn’t usually shown the way userspace processes are; it’s the thing running them.
But macOS displays kernel activity as a single pseudo-process called kernel_task so you can see how much CPU time the kernel is consuming. It’s not a single program you can quit. It represents the aggregate of:
- Kernel threads doing scheduled work
- Driver code (kernel extensions and the equivalent System Extensions)
- I/O handling
- Memory management
- Network packet processing
- And — critically — CPU throttling logic
It always shows as PID 0 and you cannot kill it. You can’t even Force Quit it from the GUI. Anything that “kills kernel_task” effectively kills the OS.
Why It Often Looks Like It’s Eating CPU
Here’s the trick: kernel_task shows high CPU not because the kernel is doing extensive work, but because the kernel is deliberately preventing other processes from doing work. Specifically, when your Mac’s CPU is too hot, the kernel allocates time to itself to keep other processes from getting that time. The CPU is busy “doing nothing” so it can cool down.
This is by Apple’s own documentation. The relevant line, paraphrased: “When a CPU’s temperature rises, the kernel responds by making CPU resources less available to processes that are creating heat. As a result, those processes get less CPU time and your Mac cools down.”
So kernel_task at 800% CPU usually means: your Mac is hot, and the kernel is forcefully throttling. The fix isn’t to tame kernel_task — it’s to address the heat.
Common Heat Sources
Things that make a Mac hot enough to trigger kernel throttling:
- CPU-intensive apps — video encoders, compilers, render engines, scientific computation
- Heavy WebGL or video — multi-tab WebGL, 4K video on a battery-only Mac, heavy WebRTC calls
- Graphics-intensive games or rendering — sustained GPU load also heats the chip
- Background processes you don’t see —
mds_storesindexing, Photos scene analysis, Time Machine running - Hardware issues — clogged fans, dust on heat sinks, thermal paste degraded over years
- Ambient temperature — a warm room, a Mac on a cushion that blocks vents
- External charger or hub — cheap USB-C hubs sometimes deliver insufficient power, and the Mac slows down to compensate
- A failing fan — common on older MacBooks; the fan should spin up but isn’t, so the kernel throttles instead
Diagnosing the Real Cause
When kernel_task is high, work backwards:
-
Check temperature. Apple doesn’t ship a built-in temperature display, but tools like iStat Menus, Stats (open source), or
powermetricsfrom Terminal show CPU/SoC temperatures.sudo powermetrics --samplers smc -i 1000 -n 1 | grep -i "CPU die temperature"If you see numbers consistently above 90°C, you’re at the throttling threshold.
-
Check what other processes are doing. Sort by CPU. Look for the actual heat producer — the build, the encoder, the misbehaving website.
-
Check Energy tab. Look for high “Energy Impact” values from non-
kernel_taskprocesses. -
Check the fan. Place your hand near the vents — is the fan spinning? On a Mac with a fan that’s clearly stuck, you’d hear it as either silent or grinding.
If the heat source is identifiable, the fix is usually obvious: close the offending app, give the Mac better airflow, plug in a proper charger, clean the vents.
When It’s Not Heat
A minority of kernel_task spikes aren’t about temperature. Other causes:
Buggy kernel extensions
A misbehaving kext (third-party kernel driver) can pin kernel_task because the offending code runs as part of the kernel. Common culprits historically:
- Older VPN clients with kernel components (Cisco AnyConnect older versions, OpenVPN with tunneling kexts)
- Antivirus tools with kernel-mode scanning
- File system drivers (early Tuxera NTFS, older iFuse implementations)
- Proprietary GPU drivers on Hackintosh-style setups
Modern macOS pushes vendors to use System Extensions instead of kernel extensions, which run in userspace. If you have older third-party drivers and kernel_task is misbehaving, check whether the vendor offers a System Extension version.
Network driver loops
A specific bug pattern: a USB network adapter or Wi-Fi card with an outdated driver gets stuck in a packet processing loop. kernel_task spikes, no real work happens. Disconnecting the adapter clears it.
Disk controller issues
A failing SSD or external disk that’s returning errors can cause the kernel to retry operations indefinitely. kernel_task rises while the kernel handles the storms of failures.
If a specific external drive or USB device causes kernel_task to spike when connected, that’s diagnostic.
USB or Thunderbolt enumeration loops
Sometimes a hub, dock, or peripheral keeps re-enumerating, and the kernel processes each enumeration. Disconnecting and reconnecting the hub clears it.
kernel_task spikes correlate with plugging in a specific peripheral, that peripheral is the problem. Try a different cable, a different port, or skip the peripheral until you've ruled it out.Apple Silicon vs. Intel
The behavior of kernel_task differs slightly between Apple Silicon and Intel Macs.
Intel Macs — particularly older MacBook Pros — were notorious for thermal throttling. The 2018 15-inch MacBook Pro with i9 was a famous case where kernel_task would peg high under sustained load due to insufficient cooling capacity for the chip Apple put in.
Apple Silicon Macs (M1/M2/M3/M4) run cooler and use far less power. kernel_task thermal throttling is less common because the chips don’t generate as much heat under typical loads. When you do see high kernel_task on Apple Silicon, the cause is more often:
- Faulty power adapter (Macs throttle when underpowered)
- Genuine hardware issue
- Buggy driver
The “Mac is too hot” pattern is more an Intel-era phenomenon.
Power Adapter Issues
A specific cause people miss: an undersized or counterfeit USB-C charger. macOS sees that the power supply can’t deliver what the chip wants under load and throttles to match. kernel_task rises.
If you’ve replaced your charger recently, especially with a third-party one rated lower than your Mac’s spec (e.g., a 30W charger on a MacBook Pro that wants 67W or 96W), this could be the cause. Try a known-good Apple charger and see if the symptom changes.
pmset can show charger info:
pmset -g batt
Look at the wattage being delivered. If it’s lower than the spec, that’s likely your culprit.
Checking for Bad Kernel Extensions
To list loaded kernel extensions:
kextstat | grep -v com.apple
That filters out Apple’s own kexts and shows third-party ones. On a clean modern Mac, this list should be very short — most third-party software has migrated to System Extensions.
If you see kexts from vendors whose software you no longer use, those are dead weight. Removing them requires either using the vendor’s uninstaller or running:
sudo kextunload -b com.example.driver
Followed by removing the kext file from /Library/Extensions/. On Apple Silicon, even unloading kexts requires Reduced Security mode.
For System Extensions (the modern equivalent):
systemextensionsctl list
Shows currently active System Extensions. These are the modern path for most third-party drivers and security tools.
There’s a faster waySweep does this kind of cleanup automatically. Try Sweep free →
Troubleshooting Steps
A practical order to work through:
- Identify the heat source. Activity Monitor sorted by CPU. What was running just before
kernel_taskspiked? - Improve cooling. Move the Mac off soft surfaces. Make sure vents are clear. Power-cycle if it’s been on for days.
- Check the charger. Plug into a known-good Apple-spec charger.
- Disconnect peripherals. Unplug everything not strictly needed. Reconnect one at a time.
- Reboot. A clean restart often resolves driver-state issues.
- Check kernel extensions and System Extensions. Remove any from vendors you no longer use.
- Check Console.app for kernel messages. Filter by
process:kernel. Look for repeated errors. - Run Apple Diagnostics — hold D at boot (Intel) or boot to Startup Options (Apple Silicon). It’ll catch hardware issues a software check can’t.
When It’s Genuine Hardware Failure
If kernel_task is consistently high, no software cause is identifiable, and the Mac is several years old, the underlying hardware may be the issue. Common patterns:
- Failing fan — physical replacement
- Dried thermal paste — thermal paste between the CPU/SoC and heat spreader degrades over years; reapplication fixes it (typically a service procedure, not user-serviceable)
- Dust accumulation — clogged heatsinks reduce cooling capacity
- Failing battery — degraded batteries can cause power delivery issues that look like throttling
For Macs under AppleCare or within reasonable age, this is a service issue. For older Macs, it may be a “live with it” situation or a “time for a new Mac” decision.
What kernel_task Tells You
The right mental model: kernel_task is the kernel’s way of expressing “I’m having to compensate for something.” High CPU here is a symptom, not a cause. The cause is heat, a bad driver, a power issue, or a peripheral problem.
Treating kernel_task itself isn’t possible — you can’t kill it, can’t disable it, can’t make it use less CPU directly. What you can do is fix the underlying issue, after which kernel_task settles down to its baseline (usually <5% on a healthy Mac). When it’s back to baseline, the rest of your apps get the CPU time they need, and the slowdown lifts.