On a processor alone, a small model writes about 35 tokens a second and an 8-billion-parameter one about 7.7. Those are the middle results in LocalScore, a public benchmark where people upload results from their own computers.
That speed suits background jobs such as sorting e-mails or tagging records. It is too slow for a chat that someone waits on. The server's memory decides which models fit; its processor decides how fast they run.
LocalScore's tests run on llamafile, which builds on the same llama.cpp project as Ollama. Treat its speeds as a guide, not an exact match.

Who this is for
- you want a small private model on a server you rent, next to n8n or an AI agent
- you want to know what a CPU-only plan can manage before you pay for one
- you are choosing between 8, 16 and 24 GB of memory
Not for you if you need fast chat for a team, or a model above 30 billion parameters: see where to run an open-source LLM.
Key numbers
- 35 tokens per second middle CPU-only result for Llama 3.2 1B (4-bit) in LocalScore, across 645 processors Our calculation,
- 7.7 tokens per second the same for Llama 3.1 8B (4-bit), across 242 processors Our calculation,
- 4,096 tokens Ollama's default context length, the text a model reads at once, unless you raise it Official page,
- 5 minutes how long Ollama keeps a model in memory after its last answer, by default Official page,
The short answer
- speed, by LocalScore's middle results: about 35 tokens a second for a 1B model, 7.7 for an 8B model and 4.7 for a 14B model
- reading a long prompt is the slow part: about a minute for 2,048 tokens on an 8B model
- 8 GB of memory holds models up to about 4 billion parameters beside n8n
- a 9 billion parameter model fits in 8 GB at 4-bit only if little else runs
- 16 GB holds every small model on our list at either compression; 24 GB also holds gpt-oss-20b
- a GPU is the next step once people wait on the answers: see when to move to a GPU
What the public benchmark shows
LocalScore is a Mozilla Builders project. People run its benchmark on their own computers and can upload the results. It records the processor, the memory and the operating system with each one.
Each model runs nine jobs, from a short question to a long document. We took every result that used the processor alone and worked out the middle value for each model.
Speed falls as models grow: the 8B model writes at about a fifth of the 1B model's speed.
| Model | Processors | Writing the answer (middle half) | Reading the prompt |
|---|---|---|---|
| Llama 3.2 1B | 645 | 35.2 (22.2 to 49.3) | 195 |
| Llama 3.1 8B | 242 | 7.7 (5.2 to 9.9) | 34 |
| Qwen2.5 14B | 244 | 4.7 (3.7 to 6.4) | 27 |
The processor makes a large difference. The table below shows single results for the 8B model, from server processors to a desktop chip and a virtual server. Each row is LocalScore's average for that machine.
Large server processors lead, and the virtual server in the list wrote at half the middle speed.
| Processor (memory in that machine) | Writing, tokens/s | Reading, tokens/s |
|---|---|---|
| Intel Xeon Platinum 8280 (94 GB) | 16.6 | 94 |
| AMD Ryzen 9 9950X, desktop (31 GB) | 11.5 | 122 |
| Intel Xeon E5-2696 v4 (128 GB) | 11.2 | 56 |
| Intel Xeon E5-2650 v4 (64 GB) | 10.0 | 32 |
| Intel Core i5-12400, desktop (31 GB) | 7.9 | 32 |
| Intel Xeon E3-1245 v3 (31 GB) | 3.8 | 15 |
| "Virtual CPU @ 2.95GHz", a virtual server (16 GB) | 3.9 | 6 |
What a rented server changes
A rented plan gives you a few cores of a large server processor, not all of them. LocalScore does not record how many cores a virtual machine had, so its results for them vary widely.
For the 1B model, results under the processor names that virtual machines usually report ranged from 2.9 to 38 tokens a second. The fastest two said "AMD EPYC-Rome"; a "QEMU Virtual CPU" was the slowest.
Most cheap plans share their cores with other customers' servers, so speed can change from hour to hour. Dedicated cores cost more.
Which jobs work at CPU speed, and which do not
Speed matters only when someone is waiting. This table turns the middle results into waiting times.
Small models answer short jobs in seconds; an 8B model needs a minute or more for long prompts.
| Model | Writing a 256-token answer | Reading a 2,048-token prompt |
|---|---|---|
| Llama 3.2 1B | about 7 s | about 11 s |
| Llama 3.1 8B | about 33 s | about 61 s |
| Qwen2.5 14B | about 54 s | about 76 s |
- good fits: sorting and tagging incoming messages, short summaries and pulling fields out of text into JSON
- also good: drafts that someone reads later, and other n8n or agent steps that run in the background
- poor fits: a chat window that people type into, long reports, and anything several people use at the same time
Set it up
Ollama's own install script sets it up as a service that starts with the server. On a fresh Ubuntu or Debian server, as root:
bash
curl -fsSL https://ollama.com/install.sh | sh
ollama pull qwen3.5:4b
ollama run qwen3.5:4b "Say hello in five words."
ollama ps # the PROCESSOR column should say 100% CPUKeep it private
By default Ollama only listens on the server itself (127.0.0.1, port 11434), and its documentation describes no login for its API. Keep it that way when n8n or your agent runs on the same server. To reach it from elsewhere through OLLAMA_HOST, put a reverse proxy with a password in front, or use a private network between your servers. Never open port 11434 to the internet.
Docker needs one extra care. Ollama's Docker command publishes the port with -p 11434:11434. Docker's own documentation says a port published like that is open on every address of the server, past a ufw firewall. Bind it to the server itself instead:
bash
docker run -d -v ollama:/root/.ollama -p 127.0.0.1:11434:11434 --name ollama ollama/ollama
docker exec -it ollama ollama run qwen3.5:4bSettings worth changing
OLLAMA_CONTEXT_LENGTH: the default context is 4,096 tokens, enough for short jobs; a longer one needs more memory and is slowerOLLAMA_KEEP_ALIVE: a model leaves memory 5 minutes after its last answer, then loads again next time. A longer value avoids that if the server has the memoryOLLAMA_NUM_PARALLEL: 1 by default, so a second request to the same model waits for the first
bash
sudo systemctl edit ollama.service
# add, under [Service]:
# Environment="OLLAMA_KEEP_ALIVE=30m"
# Environment="OLLAMA_CONTEXT_LENGTH=8192"
sudo systemctl daemon-reload && sudo systemctl restart ollamaMemory: what fits in 8, 16 and 24 GB
On a server without a GPU, the model sits in the server's ordinary memory. Its file size plus room for the conversation must fit next to the operating system and your other software.
The last column is our reading, not a measurement. It leaves about 2 GB for n8n and the system, as in our guide to how much memory n8n needs.
8 GB suits models up to about 4 billion parameters beside n8n; 16 GB covers the 9 billion class.
| Model | File size | Smallest server we would use, with n8n beside it |
|---|---|---|
| Llama 3.2 3B, 4-bit | 2.0 GB | 8 GB |
| Llama 3.2 3B, 8-bit | 3.4 GB | 8 GB |
| Qwen3.5 4B, 4-bit | 3.3 GB | 8 GB |
| Qwen3.5 4B, 8-bit | 5.2 GB | 8 GB, with little room left |
| Gemma 4 E4B, 4-bit | 6.6 GB | 16 GB |
| Qwen3.5 9B, 4-bit | 6.6 GB | 16 GB |
| Qwen3.5 9B, 8-bit | 10 GB | 16 GB |
| gpt-oss-20b | 14 GB | 24 GB |
Our GPU memory guide explains the same sums for larger models.
Connecting n8n or an agent
In n8n, the Ollama credential's Base URL is http://localhost:11434 by default. Three cases cover most errors, according to n8n's own documentation:
ECONNREFUSED ::1:11434: your server prefers IPv6 and Ollama listens on IPv4. Usehttp://127.0.0.1:11434- n8n in Docker, Ollama installed on the server: inside a container, localhost is the container itself. Start n8n with
--add-host host.docker.internal:host-gateway, usehttp://host.docker.internal:11434, and let Ollama listen beyond 127.0.0.1 withOLLAMA_HOST, while the firewall keeps port 11434 closed to the internet - both in Docker: put them on one user-defined network and use
http://ollama:11434; the port needs no publishing at all
bash
docker network create n8n-ollama
docker network connect n8n-ollama ollama
docker network connect n8n-ollama n8n
# Base URL in n8n: http://ollama:11434Our guide to securing self-hosted n8n covers the rest of the server.
When to move to a GPU
Move when people wait on the answers or several use it at once. Move too when you need a model above about 10 billion parameters at a usable speed. A GPU by the hour is the cheapest way to try that. Our guide to where to run an open-source LLM compares every route with this week's prices.
On a GPU, an 8B model writes many times faster. In a public llama.cpp benchmark, an RTX 4090 wrote Llama 3 8B at 4-bit at about 128 tokens a second. Our speed figures by card list more cards.
For a chat assistant a whole team can log in to, our guide to a private chat assistant for a team sizes the server.
| Plan | Price | New-customer offer | Link |
|---|---|---|---|
| Contabo Cloud VPS 4 4 vCPU, 8 GB | €4.40/month 24-month term, paid up front; the price applies to the first 24 months and to the EU region in Germany; other regions cost more each month checked 25 Oct 2026 | No offer | Visit |
| Hostinger KVM 2 2 vCPU, 8 GB | $8.79/month 24-month term, paid up front; Black Friday first-term price, then $14.99 checked 25 Oct 2026 | Black Friday prices on VPS plans and AI automation apps, for the first subscription term only checked 30 Oct 2026 | Visit |
| DigitalOcean Basic Droplet, 4 vCPUs, 8 GiB 4 vCPU, 8 GB | $48/month billed per second (60-second minimum), capped at this monthly price · VAT not stated checked 25 Oct 2026 | New accounts get a $5 credit that lasts 90 days and covers every product except SaaS add-ons checked 29 Oct 2026 | Visit |
| Cherry Servers Cloud VDS 2 4 vCPU, 16 GB | €29/month monthly, no long-term contract; Autumn Sale price, with no end date stated checked 25 Oct 2026 | Autumn Sale prices on Cloud VDS plans, up to 41% off, applied without a code checked 30 Oct 2026 | Visit |
| DigitalOcean Basic Droplet, 8 vCPUs, 16 GiB 8 vCPU, 16 GB | $96/month billed per second (60-second minimum), capped at this monthly price · VAT not stated checked 25 Oct 2026 | New accounts get a $5 credit that lasts 90 days and covers every product except SaaS add-ons checked 29 Oct 2026 | Visit |
| Contabo Cloud VPS 8 8 vCPU, 24 GB | €11.20/month 24-month term, paid up front; the price applies to the first 24 months and to the EU region in Germany; other regions cost more each month checked 25 Oct 2026 | No offer | Visit |
Some of the lowest prices need a long term paid in advance; the term is under each price.
How we checked
We read LocalScore's results and its method on 27 October 2026 and worked out the medians from its own page data. Ollama's, n8n's and Docker's documentation and the model pages on ollama.com were read the same day.
Our own measurements will be added here, with their dates, when our test bench runs them.
Mistakes to avoid
Opening port 11434 to the internet
Instead: Its API has no login: keep it on 127.0.0.1, or put a proxy with a password in front.
Publishing the Docker port on every address
Instead: Use -p 127.0.0.1:11434:11434, or no published port on a shared Docker network.
Using localhost from inside a container
Instead: Each container has its own localhost: use host.docker.internal or the container's name.
Choosing the biggest model that fits
Instead: On a CPU, a smaller model that answers in time beats a larger one that times out.
Other questions
Can you run an LLM on a CPU?
Yes. In LocalScore's public results, the middle processor writes about 35 tokens a second with a 1B model and about 7.7 with an 8B model. That suits background jobs better than chat.
How much memory does an Ollama VPS need?
8 GB for models up to about 4 billion parameters. 16 GB for the 7 to 9 billion class at 8-bit, or with other software beside it. 24 GB for gpt-oss-20b. Leave room for n8n or your agent.
Does Ollama need a GPU?
No. It runs on the processor when there is no GPU; ollama ps shows 100% CPU. A GPU makes it much faster.
Why does n8n say connection refused when it talks to Ollama?
Usually localhost: inside a Docker container it points at the container itself, and on IPv6 servers it may point at ::1. Use 127.0.0.1, host.docker.internal or the container's name.
Sources and test notes
- LocalScore: about the benchmark and its tests, read
- LocalScore: Llama 3.2 1B results, read
- LocalScore: Llama 3.1 8B results, read
- LocalScore: Qwen2.5 14B results, read
- Ollama on GitHub (supported backends), read
- Ollama FAQ, read
- Ollama on Linux, read
- Ollama in Docker, read
- Ollama model library, read
- n8n: Ollama credentials, read
- n8n: Ollama Chat Model common issues, read
- Docker: port publishing, read
- Docker: packet filtering and firewalls, read
Every page read on 27 October 2026. Speeds: our medians of LocalScore's CPU-only results on that day (645, 242 and 244 processor entries).