Teste: Como a Ollama está utilizando o desempenho da CPU Intel e os núcleos eficientes
Ollama no processador Intel CPU Eficiente vs. núcleos de Desempenho
Tenho uma teoria para testar - se utilizar todos os núcleos em uma CPU Intel aumentaria a velocidade dos LLMs? Estou incomodado com o fato de que o novo modelo gemma3 27 bit (gemma3:27b, 17GB no ollama) não está cabendo na VRAM de 16GB da minha GPU, e está rodando parcialmente na CPU.
Para mais informações sobre throughput, latência, VRAM e benchmarks em diferentes runtimes e hardware, veja Desempenho de LLMs: Benchmarks, Bottlenecks & Otimização.
Para ser mais preciso
ollama ps
está mostrando
gemma3:27b a418f5838eaf 22 GB 29%/71% CPU/GPU
Embora não pareça terrível, é a divisão das camadas. A carga real é: GPU:28%, CPU: 560%. Sim, vários núcleos estão sendo usados.

E aqui está a ideia:
E se tentarmos empurrar o ollama para usar TODOS os núcleos da CPU Intel - tanto os de Performance quanto os de Efficient?
Parâmetro de configuração OLLAMA_NUM_THREADS
O Ollama possui uma variável de ambiente de configuração chamada OLLAMA_NUM_THREADS, que supostamente deve dizer ao ollama quantos threads e núcleos ele deve utilizar.
Tentei restringi-lo a 3 núcleos primeiro:
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
mas não funcionou.
O Ollama ainda estava usando ~560% da CPU ao executar o LLM Gemma 3 27B.
Azar.
Opção de chamada num_thread
Vamos tentar chamar
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Por que o céu azul é azul?",
"stream": false,
"options":{
"num_thread": 8
}
}' | jq .
O resultado:
- Uso da CPU: 585%
- Uso da GPU: 25%
- Potência da GPU: 67w
- Avaliação de desempenho: 6,5 tokens/segundo
Agora vamos 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": "Por que o céu azul é azul?",
"stream": false,
"options":{
"num_thread": 16
}
}' | jq .
O resultado:
- Uso da CPU: 1030%
- Uso da GPU: 26%
- Potência da GPU: 70w
- Avaliação de desempenho: 7,4 t/s
Boa! O desempenho aumentou em cerca de 14%!
Agora vamos ao extremo! Todos os núcleos físicos!
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Por que o céu azul é azul?",
"stream": false,
"options":{
"num_thread": 20
}
}' | jq .
O resultado:
- Uso da CPU: 1250%
- Uso da GPU: 10-26% (instável)
- Potência da GPU: 67w
- Avaliação de desempenho: 6,9 t/s
Okay. Agora vemos uma queda no desempenho. Vamos tentar 8 de Performance + 4 de eficientes:
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Por que o céu azul é azul?",
"stream": false,
"options":{
"num_thread": 12
}
}' | jq .
O resultado:
- Uso da CPU: 801%
- Uso da GPU: 27% (instável)
- Potência da GPU: 70w
- Avaliação de desempenho: 7,1 t/s
Aqui e ali.
Para comparação - executando o Gemma 3 14b, ele é menos inteligente comparado ao Gemma 27b, mas encaixa-se bem na VRAM da GPU.
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:12b-it-qat",
"prompt": "Por que o céu azul é azul?",
"stream": false
}' | jq .
O resultado:
- Uso da CPU: 106%
- Uso da 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 mais!
Conclusão
Se o LLM não couber na VRAM da GPU e algumas camadas forem desempenhadas pela CPU pelo Ollama
- Podemos aumentar o desempenho do LLM em 10-14% fornecendo o parâmetro
num_thread - A queda de desempenho devido à desempenha é muito maior e não compensada por esse aumento.
- Melhor ter uma GPU mais poderosa com mais VRAM. A RTX 3090 é melhor que a RTX 5080, embora eu não tenha nenhum desses…
Para mais benchmarks, ajuste de CPU/GPU e orientações de desempenho, consulte nosso Desempenho de LLMs: Benchmarks, Bottlenecks & Otimização hub.