Test: Hur Ollama använder Intel CPU-prestanda och effektiva kärnor
Ollama på Intel CPU: Effektivitet vs prestandaenheter
Jag har en teori att testa – om man använder alla kärnor på Intel CPU skulle det öka hastigheten hos LLMs? Det är irriterande att den nya gemma3 27-bit model (gemma3:27b, 17GB på ollama) inte passar in i min GPU:s 16GB VRAM och delvis kör på CPU.
För mer information om genomströmningsförmåga, latens, VRAM och jämförelser mellan olika körningar och hårdvara, se LLM-prestanda: Benchmarks, halsar och optimering.
För att vara tydlig:
ollama ps
visar:
gemma3:27b a418f5838eaf 22 GB 29%/71% CPU/GPU
Även om det inte ser så dåligt ut, så är det lager som är uppdelade. Den faktiska belastningen är: GPU:28%, CPU: 560%. Ja, flera kärnor används.

Och här är idén:
Vad händer om vi tvingar ollama att använda ALLA Intel CPU-kärnor – både prestanda- och effektiva typer?
OLLAMA_NUM_THREADS konfigurationsparameter
Ollama har en miljövariabelkonfigurationsparameter OLLAMA_NUM_THREADS som ska berätta för ollama hur många trådar och kärnor den ska använda.
Jag försökte först begränsa den till 3 kärnor:
sudo xed /etc/systemd/system/ollama.service
# lägg till OLLAMA_NUM_THREADS=3 som
# Environment="OLLAMA_NUM_THREADS=3"
sudo systemctl daemon-reload
sudo systemctl restart ollama
och det fungerade inte.
Ollama använde fortfarande ungefär 560% av CPU:n när Gemma 3 27B LLM kördes.
Dåligt lyckat.
num_thread anropsoption
Låt oss prova att anropa:
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Varför är himlen blå?",
"stream": false,
"options":{
"num_thread": 8
}
}' | jq .
Resultatet:
- CPU-användning: 585%
- GPU-användning: 25%
- GPU-effekt: 67w
- Prestandaevaluering: 6,5 tokens/sec
Låt oss nu dubbla antalet kärnor. Berätta för ollama att använda en blandning av prestanda- och effektiva kärnor:
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Varför är himlen blå?",
"stream": false,
"options":{
"num_thread": 16
}
}' | jq .
Resultatet:
- CPU-användning: 1030%
- GPU-användning: 26%
- GPU-effekt: 70w
- Prestandaevaluering: 7,4 t/s
Bra! Prestandan ökade med ~14%!
Nu går vi ännu längre! Alla fysiska kärnor!
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Varför är himlen blå?",
"stream": false,
"options":{
"num_thread": 20
}
}' | jq .
Resultatet:
- CPU-användning: 1250%
- GPU-användning: 10-26% (instabil)
- GPU-effekt: 67w
- Prestandaevaluering: 6,9 t/s
Okej. Nu ser vi en liten prestandasänkning. Låt oss prova med 8 prestanda + 4 effektiva:
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Varför är himlen blå?",
"stream": false,
"options":{
"num_thread": 12
}
}' | jq .
Resultatet:
- CPU-användning: 801%
- GPU-användning: 27% (instabil)
- GPU-effekt: 70w
- Prestandaevaluering: 7,1 t/s
Här och där.
För jämförelse – när man kör Gemma 3 14b är den mindre smart jämfört med Gemma 27b, men passar in i GPU VRAM på ett mycket bättre sätt.
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:12b-it-qat",
"prompt": "Varför är himlen blå?",
"stream": false
}' | jq .
Resultatet:
- CPU-användning: 106%
- GPU-användning: 94% (instabil)
- GPU-effekt: 225w
- Prestandaevaluering: 61,1 t/s
Det är vad vi kallar för prestanda. Även om Gemma 3 27b är smartare än 14b, så är den inte tio gånger smartare!
Slutsats
Om LLM inte passar in i GPU VRAM och vissa lager avlastas av Ollama till CPU
- Kan vi öka LLM-prestandan med 10-14% genom att ange
num_thread-parametern - Den prestandasänkning som orsakas av avlastning är mycket större och inte kompenserad av denna ökning.
- Bättre att ha en mer kraftfull GPU med mer VRAM. RTX 3090 är bättre än RTX 5080, även om jag inte har någon av dessa…
För mer benchmarks, CPU/GPU-tuning och prestandaråd, kontrollera vår LLM-prestanda: Benchmarks, halsar och optimering hub.