← tuanphung.dev
A one-line fix

One pmset flag
to stop your Mac cooking

I was running a big local LLM on my M-series MacBook — something in the Qwen3 / Gemma 3 27B class through Ollama or LM Studio. Within a few minutes the chassis was hot, the fans were loud, and the SoC sensor sat around 90 °C. I asked Claude for the cheapest fix. It is an AI, so helping calm another AI's appetite felt only fair. The answer was one line in the terminal: macOS Low Power Mode, flipped on with pmset. Same job, a bit slower — and on my machine the same sensor read about 75 °C instead.

The one-sentence version

Low Power Mode caps the clocks, so a sustained AI workload runs flat and cool instead of spiking against the thermal limit — it just takes longer.

You trade peak speed for a lower, steadier power draw. For interactive work that trade is usually wrong. For a model that will run for twenty minutes anyway, it is usually right.

Turning it on and off

Low Power Mode lives in System Settings, but the terminal version is faster and scriptable. It takes sudo, applies instantly — no restart, no logout — and persists across reboots until you change it back.

On (battery only)
sudo pmset -b lowpowermode 1
Off again
sudo pmset -b lowpowermode 0
Check where it stands
pmset -g custom | grep -B5 lowpowermode

The -b picks which power source the setting applies to. My heavy LLM runs usually happen docked, so the flag I reach for most is -a:

Flag Applies when Example
-bOn batterysudo pmset -b lowpowermode 1
-cPlugged in (charger)sudo pmset -c lowpowermode 1
-aAlways — both sourcessudo pmset -a lowpowermode 1

These map one-to-one onto the dropdown in System Settings → Battery → Low Power Mode (Never / Always / Only on Battery / Only on Power Adapter) — flip it in either place and the other follows. When it's active, the battery icon in the menu bar turns yellow.

Why bother: the local-LLM sauna

Most workloads come in bursts — compile, wait, scroll. The Mac sprints, finishes, cools off. A local LLM is the opposite: inference saturates the GPU and memory for as long as the job runs. Minutes, sometimes hours, of constant full load. The same applies to long agent sessions, batch transcription, video exports — anything that pins the SoC and keeps it pinned.

At full clocks the chip hits its thermal ceiling and the firmware starts a cycle: boost, overheat, throttle, cool a little, boost again. I could watch the sawtooth in the temperature readout, hear it in the fans — and feel it in the keyboard deck. Low Power Mode caps the clocks below the point where that fight starts. The power curve goes flat, and the spikes simply never happen.

Full clocks
The sawtooth
temp ▲ 90° │ ╱╲ ╱╲ ╱╲ ╱╲ │╱ ╲╱ ╲╱ ╲╱ ╲ └────────────────▶ boost → throttle → boost
Low Power Mode
The flat line
temp ▲ │ 75° ───────────── │ └────────────────▶ capped clocks, no fight

The trade, honestly

These are readings from my MacBook running a ~27B model — one machine, read by eye off the sensor readout, not a benchmark. Your numbers will differ; the shape of the trade will not.

Full clocks Low Power Mode
SoC temperature~90 °C, spiky~75 °C, flat
FansLoudQuiet to near-silent
ThroughputFull speedNoticeably slower — the job takes longer
ChassisHot to the touchWarm
On batteryDrains fastMeaningfully longer runtime

To watch the numbers yourself: a menu-bar app like Stats is the comfortable way, or sudo powermetrics --samplers smc straight from the terminal.

When I flip it on

On

  • +Local LLMs grinding through anything unattended — big generations, batch jobs, long agent runs
  • +Overnight work — a capped, cool machine is the one I am comfortable leaving alone
  • +Working on the couch — no fan noise, no hot lap
  • +On battery, away from a charger — the original point of the feature

Off

  • Interactive chat with a local model, where you sit and wait for tokens
  • Video exports on a deadline — heat is fine, waiting is not
  • Anything where latency is the product — dev servers, screen recording, live demos

The pattern we landed on: if I will walk away from the job, Low Power Mode goes on. If I will sit and wait for it, it stays off.

A 27-billion-parameter model does not care whether it finishes in twenty minutes or thirty. Claude can confirm this from the inside. Your fans, your battery, and your lap do care. sudo pmset -a lowpowermode 1 before the long job, 0 when you want the speed back. One flag, fifteen degrees.