On this page
- Step 1: Check where the model is running
- Step 2: Check if your Mac is swapping
- Step 3: Lower the context length
- Step 4: Shrink the conversation cache
- Step 5: Unload what you’re not using
- Step 6: Pick a smaller quant or model
- Symptom, check, fix
- A Mac app that tells you what fits
- Need the full-size model?
- FAQ
When Ollama is painfully slow on a Mac, the model usually doesn’t fit in the memory you have free. Part of it runs on the CPU, or macOS starts swapping to disk, and replies drop to a word every few seconds. Run ollama ps and check Memory Pressure in Activity Monitor. Then lower the context, unload other models and pick a smaller quant. If the model is bigger than your Mac’s memory, no setting will make it fast.
The commands below are from Ollama’s own docs, checked on 16 November 2026.
Step 1: Check where the model is running
In Terminal, while the model is loaded:
ollama ps
Look at the PROCESSOR column:
| It says | What it means |
|---|---|
100% GPU |
The whole model is on your Mac’s GPU through Metal. Good. |
48%/52% CPU/GPU |
Only part of it fits, and the CPU does the rest. Slower. |
100% CPU |
The model is in system memory only. Slowest. |
Ollama’s docs put it plainly: for best performance, avoid offloading the model to the CPU.
Step 2: Check if your Mac is swapping
Open Activity Monitor and click Memory. At the bottom, watch Memory Pressure and Swap Used while Ollama answers. Green with no new swap is fine. Yellow or red, or swap that keeps climbing, means the model and everything else don’t fit in memory, and that’s what makes it crawl.
Step 3: Lower the context length
The context window is the hidden cost. Ollama’s docs say a larger context needs more memory. Ollama picks a default from your GPU memory: 4k under 24 GB, 32k from 24 to 48 GB, and 256k from 48 GB up. On a 36 GB or 64 GB Mac that default can be large enough to push the model into swap.
To change it:
- In the Ollama app: move the context length slider in Settings.
- For one session: type
/set parameter num_ctx 4096insideollama run. - For the server: run
launchctl setenv OLLAMA_CONTEXT_LENGTH 8192, then quit and reopen Ollama.
Coding tools and agents want a long context, and Ollama suggests at least 64000 tokens for them. If you need that much, use a smaller model so the context fits too.
Step 4: Shrink the conversation cache
Set the cache to q8_0:
launchctl setenv OLLAMA_KV_CACHE_TYPE q8_0
Then restart Ollama. Ollama’s FAQ says q8_0 uses about half the memory of the default f16. q4_0 uses about a quarter, with more quality loss on long contexts. It needs Flash Attention, which Ollama turns on when your Mac supports it, and it applies to every model.
Step 5: Unload what you’re not using
Ollama keeps each model loaded for 5 minutes after you use it, and it can keep several at once. Run ollama ps, then ollama stop <model> for each one you don’t need. Close memory-heavy apps too: browsers with many tabs, Docker, Xcode and other AI apps.
Step 6: Pick a smaller quant or model
If Steps 3 to 5 still leave you on CPU or swapping, the model is too big for your Mac. Pull a 4-bit tag instead of 8-bit, or the next size down. A rough guide: a 4-bit GGUF is about 0.6 GB per billion parameters, plus room for the context and for macOS itself.
Symptom, check, fix
| Symptom | Check | Fix |
|---|---|---|
| Slow from the first word | ollama ps shows CPU share |
Smaller model or quant |
| Fast at first, slow on long chats | Context length | Lower num_ctx, q8_0 cache |
| Whole Mac stutters while it answers | Memory Pressure red, swap rising | Close apps, smaller model |
| Slow only when a second model is loaded | ollama ps lists two models |
ollama stop the other one |
| Slow on an Intel Mac | No Apple silicon GPU | Use a small model, expect CPU speed |
A Mac app that tells you what fits
Off Grid AI Desktop is a free app that runs GGUF models on your Mac’s GPU through Metal. The Models screen gives memory guidance for every model and marks the ones that are Tight on RAM or Won’t fit on your Mac, so you can skip the slow ones before you download. You set the context window per model, and the performance settings include the KV cache and FlashAttention. Settings → AI activity shows the model, backend and status for each request, so you can see why one was slow.
Need the full-size model?
Some models are bigger than any laptop’s memory, and a smaller quant isn’t good enough for the job. Off Grid AI Boost is an API for open models on our GPUs, at one flat price from $4.99 a month for the first cohort (regular price $9.99, plans up to $199.99). It names Qwen 3.8 and DeepSeek V4.1 Flash, uses one API key for every model, and we don’t store your prompts or train on them. The full privacy policy comes with launch.
It’s a pre-order. Boost starts in January; pre-order to lock in half price. Usage limits for each plan aren’t published yet. Keep fast small models on your Mac and send the big jobs to Boost.
FAQ
Why is Ollama using 100% CPU on my M-series Mac?
The model or its context doesn’t fit in the memory the GPU can use, so Ollama runs part of it on the CPU. Lower the context or use a smaller model until ollama ps shows 100% GPU.
How do I set environment variables for the Ollama app on a Mac?
Use launchctl setenv NAME value, then quit and reopen the app. That’s the method in Ollama’s FAQ.
Does more context make Ollama slower?
Yes, once it stops fitting in memory. A long context is fine while ollama ps still shows 100% GPU and there’s no swap.
What size model runs well on a 16 GB Mac?
Check ollama ps and Memory Pressure rather than trusting a chart. A model that stays at 100% GPU with green memory pressure is the right size.
Will closing apps help? Yes. Your browser and the model share the same memory on a Mac. Freeing a few gigabytes can move a model from CPU back to GPU.
Start with ollama ps. If it doesn’t say 100% GPU, the fix is less memory, not more patience.