Mac Performance Guide

Check if your Mac is thermal throttling

Short answer

Run pmset -g therm. If it prints "No thermal warning level has been recorded" and "No performance warning level has been recorded", macOS has not slowed the Mac down for heat. To ask macOS directly for its current thermal state, which works the same on Apple Silicon and Intel and needs no sudo, run the one-line osascript command below: 0 means nominal, and anything higher means the Mac is hot enough to be cutting back.

Step 1: pmset -g therm (no sudo)

pmset -g therm
Note: No thermal warning level has been recorded
Note: No performance warning level has been recorded
Note: No CPU power status has been recorded

That is a Mac that is not throttling, here on an M4 Max. When macOS has recorded a problem, the matching line is replaced with a number, as Thermal Warning Level = or Performance Warning Level = followed by the level.

The third line, the CPU power status, is where Intel Macs show throttling most clearly. When it has been recorded it lists three limits, defined in Apple's IOKit headers:

Do not expect those fields on Apple Silicon. Apple Silicon Macs throttle by lowering the clock of each CPU cluster, and the reliable way to see it there is the thermal state or powermetrics, below.

To watch for changes while you reproduce the slowdown, use the log form. It prints the current state, then a new entry each time it changes, until you press Control-C:

pmset -g thermlog

Step 2: the thermal state (no sudo, Apple Silicon and Intel)

macOS publishes a single thermal state to apps so they can slow down when the Mac is hot. You can read it from the terminal with JavaScript for Automation:

osascript -l JavaScript -e 'ObjC.import("Foundation"); $.NSProcessInfo.processInfo.thermalState'
0

Apple's documentation for NSProcessInfo defines the four values:

Serious or critical while a long job is running is thermal throttling.

Step 3: powermetrics (needs sudo)

For a second opinion, powermetrics reports the thermal pressure level. It needs your administrator password:

sudo powermetrics --samplers thermal -n 1

Look for the line Current pressure level:. The levels it can report are Nominal, Moderate, Heavy, Trapping and Sleeping; anything above Nominal means the system is under thermal pressure. It is a single reading at the end of the sample, so take several during the slow period.

To see the throttling itself, the cpu_power sampler reports CPU frequencies; on Apple Silicon it shows the active frequency of each CPU cluster. A frequency that sinks while the load stays the same is the throttle at work:

sudo powermetrics --samplers cpu_power,thermal -i 2000 -n 5

On Apple Silicon, powermetrics does not print CPU temperatures; it only gives the pressure level. On Intel Macs its smc sampler includes CPU die temperature and fan speed.

Signs in Activity Monitor

Activity Monitor has no throttling indicator, but a few things point to it:

High CPU on its own is not throttling. A Mac at 100% on every core with a nominal thermal state is simply busy.

If it is throttling

The easier way: GaugeMon

GaugeMon keeps the CPU temperature in your menu bar, so you see the Mac heating up before it slows down. Click the Temperature gauge for every sensor, the hottest CPU and GPU readings, and macOS’s thermal state; the CPU gauge charts each cluster’s frequency, so a throttle shows as the line stepping down. Temperature and frequency need Apple Silicon.

GaugeMon's detail popover showing the current reading, a 10-minute history chart and the top five processes
Download GaugeMon free trial Learn more

Related guides