macOS · performance · Apple silicon

Making macOS Tahoe faster, without snake oil

A grounded look at power settings, background work, memory pressure, display scaling, command-line checks, and the tweaks that mostly make the interface feel quicker.

There is no hidden “use all the cores” switch on Apple silicon. macOS already schedules the CPU and GPU resources available to it; the application decides how much parallel work it can use. Remove power limits and competing work, find the actual bottleneck, and measure changes before keeping them.

The short versionOn an M1 Pro, use Automatic power mode on the charger and make sure Low Power Mode is off for demanding work. High Power Mode cannot be unlocked with a plist, an NVRAM flag, or a secret pmset value.

Power and the adapter

In System Settings, open Battery and set the power mode for the charger to Automatic. If your Tahoe build exposes Low Power Mode instead, turn it off while doing the test or workload that matters.

The M1 Pro is not one of the machines that supports High Power Mode. Setting powermode 2 does not turn it into an M1 Max, and private preference edits cannot raise the chip’s supported voltage or thermal envelope.

# Inspect power preferences
pmset -g custom

If the output includes lowpowermode, this disables it while connected to a charger:

sudo pmset -c lowpowermode 0

The charger question

A 96W Apple adapter is enough for a short GPU-only benchmark on an M1 Pro. During a long combined CPU and GPU workload, watch the battery percentage while the Mac is plugged in. If it keeps falling, repeat the test with the original 140W MagSafe adapter so power delivery is no longer an unknown.

More wattage does not create performance by itself. It only helps when the Mac is actually using more than the attached adapter can provide.

What is worth checking

Background work

Review General → Login Items & Extensions. Remove unnecessary items that open at login and selectively disable background activity for unused cloud clients, menu-bar utilities, peripheral suites, VPNs, updaters, and security products.

Do this one group at a time. An unfamiliar item may be responsible for syncing, notifications, or updates that you still need.

Memory pressure

With 16GB of unified memory, a browser full of tabs alongside Electron apps, Docker, virtual machines, or creative tools can be the real limit. Watch Activity Monitor’s Memory Pressure graph. Green is the useful target.

Free memory is not the target: macOS uses spare memory as cache. Some swap is normal. Yellow or red pressure, especially with rapidly growing swap, means something needs to close.

Working space on the startup disk

A nearly full disk leaves less room for swap, caches, builds, and application scratch data. There is no universal percentage to protect, but avoiding the last few tens of gigabytes is sensible on a 16GB machine.

Display scaling

On a 4K display, a scaled “Looks like 2560 × 1440” desktop may use a larger intermediate surface and then downsample it. If WindowServer or desktop animation feels heavy, compare it with the display’s default mode. This can help the compositor, but it normally will not change a fixed-resolution full-screen 3D benchmark.

Native applications

In Finder’s Get Info panel, look for Application (Apple silicon) or Universal. Do not enable “Open using Rosetta” unless an older plug-in requires it. Rosetta is useful compatibility software, not a performance mode.

Indexing, backups, and sync

After an OS update or a large file move, Spotlight, Photos, iCloud, and Time Machine may use CPU and storage bandwidth. Let them settle before benchmarking. For development work, exclude only disposable high-churn folders such as build output, caches, or VM images instead of disabling Spotlight for the whole disk.

Game Mode

For a supported full-screen game, verify Game Mode in the Game Overlay with Command-Esc. It prioritises the active game and connected controllers; it is not a system-wide turbo profile.

Making the interface feel quicker

These changes reduce visual work or shorten waiting. They do not make a compiler, renderer, or benchmark finish sooner.

  • Try Accessibility → Display → Reduce transparency.
  • Try Accessibility → Motion → Reduce motion.
  • Use a less transparent or tinted Liquid Glass appearance.
  • Remove widgets and live menu-bar utilities you never use.

If the Dock is hidden, these undocumented preferences shorten its reveal delay. They are reversible and may be ignored by future versions of macOS:

defaults write com.apple.dock autohide-delay -float 0
defaults write com.apple.dock autohide-time-modifier -float 0.15
killall Dock

Restore the defaults with:

defaults delete com.apple.dock autohide-delay
defaults delete com.apple.dock autohide-time-modifier
killall Dock

A small command-line audit

Run this before the workload, not during a measured run. The diagnostic commands themselves use resources.

# Power and thermal state
pmset -g custom
pmset -g therm

# Read the second top sample
top -l 2 -s 1 -o cpu -n 15 \
  -stats pid,command,cpu,mem,threads,state

# Memory, storage, backups, and indexing
sysctl vm.swapusage
vm_stat
df -h /
tmutil status
mdutil -s /

# Background items and system extensions
sfltool dumpbtm | less
systemextensionsctl list

The first top sample does not contain reliable per-process CPU percentages, hence the request for two samples. mdutil -s / reports whether indexing is enabled, not whether it is busy. For current activity, look for mds and mdworker in Activity Monitor or top.

Parallel work in your own tools

There is no global scheduler switch. A tool that supports parallel jobs can be given more workers, but only when it does not already choose a sensible number:

make -j"$(sysctl -n hw.logicalcpu)"

More workers can be slower when memory pressure, dependency bottlenecks, or heat turn extra parallelism into extra waiting.

Tweaks to avoid

  • sudo purge: it evicts useful disk cache and makes subsequent launches colder. It does not create GPU clocks or physical RAM.
  • “Gaming” sysctl packs: frequency values are not user-tunable on Apple silicon, and many recipes are obsolete or Intel-specific.
  • nvram boot-args and serverperfmode=1: persistent debugging controls are not a consumer performance menu.
  • Disabling SIP, AMFI, Gatekeeper, FileVault, or XProtect: the security cost is real and the benchmark benefit is not.
  • Disabling swap, compression, or dynamic_pager: this removes mechanisms that keep a 16GB Mac usable under pressure.
  • Killing system daemons: mds, backupd, powerd, and thermal services may respawn, redo work, or leave features broken.
  • Global App Nap disable or renice -20: scheduling priority does not overclock the GPU and can starve WindowServer.
  • Private fan or SMC writes: cooling can delay throttling, but it cannot unlock an unsupported power mode.

A repeatable routine

  1. Use Automatic mode on AC power and confirm Low Power Mode is off.
  2. After a major update, let indexing, Photos, and cloud sync settle.
  3. Quit workloads you recognise and do not need.
  4. Check Memory Pressure and free disk space.
  5. Use native Apple silicon applications and sensible display scaling.
  6. Run the same workload three times and compare the median.
  7. Change one variable at a time, keep the baseline, and retain only measurable wins.

That is the closest thing to a universal macOS optimisation flag: measure first, and be suspicious of any tweak that cannot survive a controlled comparison.

Sources

  1. Apple, Use High Power Mode on supported Mac models
  2. Apple, Change Login Items & Extensions settings
  3. Apple, Check memory pressure in Activity Monitor
  4. Apple, Change display resolution
  5. Apple, About Rosetta on Mac
  6. Apple, Spotlight Search Privacy
  7. Apple, Use Game Mode on Mac
  8. Apple, macOS Tahoe updates