Teste: Como o Ollama está utilizando os núcleos de desempenho e eficientes da CPU Intel
Ollama em CPUs Intel: núcleos eficientes versus núcleos de desempenho
Tenho uma teoria para testar: se utilizar todos os núcleos de uma CPU Intel aumentaria a velocidade dos LLMs? Isso tem me incomodado: o novo modelo gemma3 de 27 bilhões (gemma3:27b, 17GB no Ollama) não cabe nos 16GB de VRAM da minha GPU e está rodando parcialmente na CPU.
Para saber mais sobre vazão (throughput), latência, VRAM e benchmarks em diferentes ambientes e hardware, veja Desempenho de LLM: Benchmarks, Gargalos & Otimização.
Para ser preciso:
ollama ps
está mostrando:
gemma3:27b a418f5838eaf 22 GB 29%/71% CPU/GPU
Embora não pareça terrível, é uma divisão de camadas. A carga real é: GPU: 28%, CPU: 560%. Sim, vários núcleos estão sendo usados.

E aqui está a ideia:
E se forçarmos o Ollama a usar TODOS os núcleos da CPU Intel - tanto os de Performance quanto os Eficientes?
Parâmetro de configuração OLLAMA_NUM_THREADS
O Ollama possui um parâmetro de configuração de variável de ambiente OLLAMA_NUM_THREADS, que deveria dizer ao Ollama quantos threads e núcleos deve utilizar.
Tentei primeiro restringir a 3 núcleos:
sudo xed /etc/systemd/system/ollama.service
# Coloque OLLAMA_NUM_THREADS=3 como
# Environment="OLLAMA_NUM_THREADS=3"
sudo systemctl daemon-reload
sudo systemctl restart ollama
e não funcionou.
O Ollama ainda estava usando ~560% da CPU ao rodar o LLM Gemma 3 27B.
Sorte ruim.
Opção de chamada num_thread
Vamos tentar chamar:
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Why is the blue sky blue?",
"stream": false,
"options":{
"num_thread": 8
}
}' | jq .
O resultado:
- Uso de CPU: 585%
- Uso de GPU: 25%
- Potência da GPU: 67w
- Avaliação de desempenho: 6,5 tokens/seg
Agora, vamos tentar dobrar os núcleos. Dizendo ao Ollama para usar uma mistura de núcleos de performance e eficientes:
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Why is the blue sky blue?",
"stream": false,
"options":{
"num_thread": 16
}
}' | jq .
O resultado:
- Uso de CPU: 1030%
- Uso de GPU: 26%
- Potência da GPU: 70w
- Avaliação de desempenho: 7,4 t/s
Bom! O desempenho aumentou em ~14%!
Agora vamos exagerar! Todos os núcleos físicos!
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Why is the blue sky blue?",
"stream": false,
"options":{
"num_thread": 20
}
}' | jq .
O resultado:
- Uso de CPU: 1250%
- Uso de GPU: 10-26% (instável)
- Potência da GPU: 67w
- Avaliação de desempenho: 6,9 t/s
Ok. Agora vemos uma queda de desempenho. Vamos tentar 8 de Performance + 4 eficientes:
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Why is the blue sky blue?",
"stream": false,
"options":{
"num_thread": 12
}
}' | jq .
O resultado:
- Uso de CPU: 801%
- Uso de GPU: 27% (instável)
- Potência da GPU: 70w
- Avaliação de desempenho: 7,1 t/s
Fica assim.
Para comparação - rodando o Gemma 3 14b, ele é menos inteligente comparado ao Gemma 27b, mas cabe perfeitamente na VRAM da GPU.
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:12b-it-qat",
"prompt": "Why is the blue sky blue?",
"stream": false
}' | jq .
O resultado:
- Uso de CPU: 106%
- Uso de GPU: 94% (instável)
- Potência da GPU: 225w
- Avaliação de desempenho: 61,1 t/s
Isso é o que chamamos de desempenho. Mesmo que o Gemma 3 27b seja mais inteligente que o 14b, não é 10 vezes!
Conclusão
Se o LLM não couber na VRAM da GPU e algumas camadas forem descarregadas pelo Ollama para a CPU:
- Podemos aumentar o desempenho do LLM em 10-14% fornecendo o parâmetro
num_thread - A queda de desempenho devido ao descarregamento é muito maior e não é compensada por esse aumento.
- É melhor ter uma GPU mais potente com mais VRAM. A RTX 3090 é melhor que a RTX 5080, embora eu não tenha nenhuma delas…
Para mais benchmarks, ajuste de CPU/GPU e orientações de desempenho, confira nosso hub Desempenho de LLM: Benchmarks, Gargalos & Otimização.