Introduction
You have an AM4 desktop with a first-gen-era Ryzen 5 2600, no graphics card worth mentioning, and a question about the one class of big model that runs on hardware like this. Dense 14B and 32B models on a CPU are a patience test: every generated token streams the whole file out of RAM, and dual-channel DDR4 moves about 51 GB/s at best. A 9 GB dense 14B file caps out near 5 tok/s before overhead.
Mixture-of-experts models break that arithmetic. Qwen3 30B-A3B holds 30.5 billion parameters, but its router activates only 8 of 128 experts per layer, so about 3.3 billion parameters do work on any given token (model card). You pay for the capacity in RAM (the q4_K_M file is 18.56 GB), but each token only has to read the active slice. That is why this model, not a dense 14B, is the one that makes a GPU-less box feel like a usable assistant in 2026.
It also changes the upgrade math. The usual advice is that a CPU swap barely moves token generation, and that stays true here. What it misses is the other half of the job. Before the model writes a single word, it has to read your prompt. That prefill step is compute-bound, and it's where a Zen 3 eight-core chip leaves a Zen+ six-core far behind. If you paste documents, run a retrieval pipeline, or keep a long system prompt, prefill is most of your wait.
So this is not a "which is faster" question. It is "which half of the workload do you actually sit through", and the answer determines whether the AMD Ryzen 7 5800X is a $186 upgrade or a $186 mistake.
Key Takeaways
- Generation moves about 1.3×. Scaled from the llamafile CPU benchmark thread and a direct Zen 3 llama.cpp measurement: 11–17 tok/s on the AMD Ryzen 5 2600 (DDR4-2933), against 14–22 tok/s on the 5800X (DDR4-3200).
- Prefill moves about 3.5×. Scaled from llamafile prefill measurements on Zen 3: ~25–30 tok/s on the 2600 against ~80–115 tok/s on the 5800X. An 8,000-token RAG prompt drops from roughly 5 minutes to under 2.
- RAM comes first. q4_K_M needs about 20.4 GB with an 8K context, so a 16 GB system cannot run it without swapping, whatever the CPU.
- Twelve cores don't rescue it. Per community-measured Zen 2 throughput, the AMD Ryzen 9 3900X lands within noise of the 5800X on both prefill and generation (same DDR4-3200 bandwidth; extra cores don’t accelerate MoE generation).
- Long context slows generation far more than on a dense model. At 32K tokens, the 3 GiB KV cache outweighs the ~2 GB of active weights read per token.
- Used prices as of 2026-09-18 (eBay US fixed-price medians): 2600 about $45, 5800X about $186, 3900X about $167, 5600G about $162.
Step 0: is your bottleneck the cores or the memory controller?
Run these checks before you spend anything. Two of them are free fixes that can beat the CPU upgrade on generation speed.
- Check the RAM speed actually applied. A 2600 on a B450 board with XMP/DOCP left off often runs at DDR4-2133 or 2400 JEDEC defaults. On Linux,
sudo dmidecode -t memory | grep -i "configured memory speed"; on Windows, CPU-Z's Memory tab (DRAM frequency × 2). Going from 2133 to 2933 is +37% bandwidth, which becomes +37% generation speed on this model. No CPU swap delivers that. - Check both channels are populated. One 16 GB stick is single-channel, and that halves bandwidth. Two sticks belong in A2 and B2 on nearly every AM4 board.
dmidecodeshould list two populated DIMMs in different channels. - Check total RAM against the quant you want (table below). If the model plus KV cache exceeds free RAM, the OS pages weights from disk and you'll see well under 1 tok/s. That's a RAM problem, not a CPU problem.
- Measure your own split.
llama-bench -m Qwen3-30B-A3B-Q4_K_M.gguf -p 512 -n 128prints prompt-processing (pp) and generation (tg) separately (llama-bench README). Inllama-server, each request logs "prompt eval time" and "eval time". If prompt eval is most of the wall-clock, the CPU upgrade pays. If eval dominates, spend the money on RAM.
How much RAM does Qwen3 30B-A3B need at each quant?
File sizes come from the unsloth GGUF repo, and the q4_K_M through q8_0 sizes match Qwen's own GGUF release. The model has 48 layers and 4 KV heads with a head size of 128 (config). That makes the fp16 KV cache 96 KiB per token, or 0.75 GiB at 8K context. The RSS column is weights + KV at 8K + about 1 GB of runtime overhead, before your OS and browser.
| Quant | Weights size | Est. total RSS (8K KV) | Minimum RAM kit | Quality notes |
|---|---|---|---|---|
| q2_K | 11.26 GB | ~13.1 GB | 16 GB (headless only) | Visible degradation; a last resort |
| q3_K_M | 14.71 GB | ~16.5 GB | 32 GB | Usable for chat, weaker on code and math |
| q4_K_M | 18.56 GB | ~20.4 GB | 32 GB | The default; best size-to-quality point |
| q5_K_M | 21.73 GB | ~23.5 GB | 32 GB | Small quality gain, ~15% slower generation |
| q6_K | 25.09 GB | ~26.9 GB | 32 GB tight, 48 GB comfortable | Near-q8 quality |
| q8_0 | 32.48 GB | ~34.3 GB | 48–64 GB | Close to lossless; slowest to generate |
On AM4, "32 GB" should mean a matched 2 × 16 GB kit. Four sticks on a Zen+ memory controller often have to drop a speed grade to stay stable, and that costs more generation speed than the extra capacity is worth unless you need 64 GB.
Spec delta: AMD Ryzen 5 2600 vs AMD Ryzen 7 5800X
Specifications are from AMD's product pages for the 2600, 5800X, 3900X and 5600G. Street prices are medians of US fixed-price eBay listings pulled on 2026-09-18.
| Part | Cores / threads | Supported memory | Rated TDP | Street price (used, 2026-09-18) |
|---|---|---|---|---|
| AMD Ryzen 5 2600 (Zen+, 12 nm) | 6 / 12, 16 MB L3 | DDR4-2933, 2 channels | 65 W | ~$45 (IQR $40–55) |
| AMD Ryzen 7 5800X (Zen 3, 7 nm) | 8 / 16, 32 MB L3 | DDR4-3200, 2 channels | 105 W | ~$186 (IQR $178–205) |
| AMD Ryzen 9 3900X (Zen 2, 7 nm) | 12 / 24, 64 MB L3 | DDR4-3200, 2 channels | 105 W | ~$167 (wide spread) |
| AMD Ryzen 5 5600G (Zen 3 APU) | 6 / 12, 16 MB L3 | DDR4-3200, 2 channels | 65 W | ~$162 (IQR $152–203) |
Dual-channel DDR4 peaks at 8 bytes × transfer rate per channel: 46.9 GB/s at 2933 and 51.2 GB/s at 3200 (Wikipedia, DDR4 SDRAM). Every chip in this table shares that ceiling, which is why generation speeds cluster so tightly below.
How many tokens per second does each chip deliver with no GPU?
No one has published a CPU-only Qwen3 30B-A3B run on these exact chips. The best public anchor is the llamafile CPU benchmark thread, which has a dense model and an MoE model on the same Zen 3 box. On a Ryzen 9 5950X with DDR4-3600, Mixtral 8x7B q4_K_M (26.49 GiB) measured 58.34 tok/s prefill (pp512) and 6.23 tok/s generation (tg16). The same machine measured 109.37 and 8.50 on dense Mistral 7B q6_K. Mixtral activates about 12.9B of its 46.7B parameters per token. So its generation works out to roughly 49 GB/s of active weights per second, about 85% of that platform's peak. That's the same efficiency the dense model got. On a CPU, sparse routing doesn't waste bandwidth.
There is one direct measurement of this exact model on Zen 3 with dual-channel DDR4-3200. It comes from a laptop Ryzen 5 5600U (six Zen 3 cores) running the Unsloth Q4_K_XL build (17.72 GB) CPU-only: 57.58 tok/s prompt eval and 16.06 tok/s generation (llama.cpp issue #13217). That generation figure works out to about 60% of the bus's peak, and it lands inside the range we estimate below for the desktop chips. The prompt was only 102 tokens, so treat the prefill number as a floor. A 15 W laptop part at short batch is the worst case for prefill.
These are our estimates for Qwen3 30B-A3B q4_K_M, not measurements. They use about 2.0 GB of active weights read per token (3.3B / 30.5B × 18.56 GB):
| CPU | RAM | Est. prefill (tok/s) | Est. generation (tok/s) | Est. first token, 2,000-token prompt |
|---|---|---|---|---|
| Ryzen 5 2600 | DDR4-2933 | ~25–30 | 11–17 | ~65–85 s |
| Ryzen 5 2600 | DDR4-3200 (outside spec, often works) | ~25–30 | 12–19 | ~65–85 s |
| Ryzen 7 5800X | DDR4-3200 | ~80–115 | 14–22 | ~17–25 s |
| Ryzen 9 3900X | DDR4-3200 | ~75–105 | 14–22 | ~19–27 s |
| Ryzen 5 5600G | DDR4-3200 | ~65–90 | 14–22 | ~22–31 s |
How we got there:
- Generation: effective bandwidth ÷ 2.0 GB. The high end uses the efficiency the thread measured (88% on a 3900X, 73% on a Zen+ Ryzen 5 3550H). The low end applies a further 0.65× haircut to that efficiency, because Qwen3's experts are small (768-wide feed-forward) and numerous, which adds per-token overhead that Mixtral's eight large experts don't have.
- Prefill: each chip's measured or scaled dense-7B pp512 (3900X 69.4; 5600X 62.3, scaled to eight cores for the 5800X; 3550H 11.75, scaled 1.8× for the desktop 2600). Then ×2.2 for Qwen3's smaller active parameter count, and ×0.5–0.7 for small-expert inefficiency. That last factor is the least certain input in the table.
Benchmark pages for each chip: Ryzen 5 2600, Ryzen 7 5800X, Ryzen 9 3900X and Ryzen 5 5600G.
Why does an MoE model run so much better on a CPU than a dense 14B does?
Generation speed on a CPU is bytes-per-token divided by bandwidth. A dense 14B at q4_K_M is about 9 GB, and every one of those bytes is read for every token. At 44 GB/s effective, that's under 5 tok/s. Qwen3 30B-A3B at the same quant is twice as large on disk, but each token touches only its active slice, roughly 2 GB. Same bandwidth, about 22 tok/s ceiling.
The trade is capacity for speed. You need RAM for all 30.5B parameters, because the router can pick any expert on the next token. But only the 3.3B active ones cost time. On a GPU with 12 GB of VRAM that trade is useless, since the whole file doesn't fit (see our best GPU for Qwen3 30B-A3B guide). On a CPU with 32 GB of cheap DDR4 it's the best deal in local inference.
The catch is context. With so few active weights, the KV cache becomes a big share of per-token reads. At 96 KiB per token, a 16K context adds 1.5 GiB of reads per token and 32K adds 3 GiB, more than the weights themselves. By bandwidth math, generation at a full context falls about 30% at 8K, 45% at 16K, and about 60% at 32K compared with a short prompt. llama.cpp's --cache-type-k q8_0 --cache-type-v q8_0 halves that cost (llama-server README), and on a CPU host it's usually worth the small quality risk.
Does core count or memory bandwidth decide this?
Both, split cleanly by phase. The llamafile thread's Ryzen 9 7940HS sweep shows the shape: going from 4 to 8 threads lifted 70B generation only from 1.30 to 1.37 tok/s, and 12 threads added nothing. Prefill on that run rose from 2.70 to 4.85 tok/s between 4 and 8 threads, then dipped slightly once SMT threads joined. The same thread's 3900X memory sweep moved generation 34% (6.32 → 8.45 tok/s from DDR4-2666 to DDR4-3600) while prefill stayed flat at about 69 tok/s (llamafile #450).
| Lever | Moves generation? | Moves prefill? | Cost on AM4 |
|---|---|---|---|
| XMP from 2133 to 2933/3200 | Yes, +37–50% | Barely | $0 |
| Second DIMM (single → dual channel) | Yes, roughly 2× | Slightly | One matching stick |
| 2600 → 5800X (6 Zen+ → 8 Zen 3 cores) | ~1.3× | ~3.5× | ~$186 used, less ~$45 resale |
| 2600 → 3900X (12 Zen 2 cores) | ~1.3× | ~3.3× | ~$167 used |
Threads above physical cores (-t 12 on a 2600) | No, often slower | No | $0, just set -t 6 |
The Zen+ to Zen 3 prefill jump is not just two extra cores. Zen+ executes 256-bit AVX2 instructions as two 128-bit halves, while Zen 2 and Zen 3 have full 256-bit datapaths. The 5800X also boosts about 800 MHz higher. Those three advantages multiply on matrix math, and prefill is almost pure matrix math.
What does the AMD Ryzen 9 3900X change with twelve cores?
Less than its core count suggests, and that is the point of including it. Twelve Zen 2 cores match the 5800X on prefill in our estimate. They get there with 1.5× the cores, because Zen 3's single eight-core CCX runs each core faster, with lower memory latency. On generation the 3900X is on the same 51.2 GB/s bus as everything else. The 64 MB of L3 doesn't help, because 2 GB of active weights per token won't fit in any cache.
It still earns a place. A 3900X bought at the low end of its wide eBay price range is the cheapest way to get 5800X-class prefill on a board that can't take a Zen 3 BIOS. And if the box also runs compiles, VMs, or video encodes, twelve cores pay off beyond inference. For inference alone, core count doesn't fix the platform's memory ceiling. See our 2600 vs 3900X Qwen3 8B comparison for the dense-model version of this result.
Where does the AMD Ryzen 5 5600G land, and does its iGPU help here?
The AMD Ryzen 5 5600G is the low-power answer: six Zen 3 cores at 65 W, the same DDR4-3200 ceiling as the 5800X, and an integrated Vega GPU that frees your PCIe slot. For generation it matches the 5800X, since both sit behind the same bus. It gives up about 20% of prefill to the 5800X.
The iGPU doesn't add bandwidth. It reads the same system DDR4 as the CPU cores, so offloading layers to it via Vulkan can't raise the generation ceiling. On this exact model it made prefill worse: the 5600U owner in llama.cpp issue #13217 found Vulkan on the Vega iGPU "3-4x slower than the CPU in terms of PP, and about 10% slower in token generation." Run the 5600G CPU-only. The 5600G's real appeal is an always-on assistant that idles quietly at 65 W. Our Ryzen 9 3900X vs Ryzen 5 5600G guide covers that trade in depth.
Perf per dollar and perf per watt across all four AM4 chips
Midpoints of the estimate ranges above, q4_K_M, at each chip's rated memory speed. Price is the 2026-09-18 eBay median, and watts are rated TDP (a proxy, not measured wall power).
| Chip | Est. generation (tok/s) | Est. prefill (tok/s) | Gen tok/s per $100 | Prefill tok/s per $100 | Gen per TDP watt | Prefill per TDP watt |
|---|---|---|---|---|---|---|
| Ryzen 5 2600 | 14 | 27 | 31 | 60 | 0.22 | 0.42 |
| Ryzen 7 5800X | 18 | 97 | 9.7 | 52 | 0.17 | 0.92 |
| Ryzen 9 3900X | 18 | 90 | 10.8 | 54 | 0.17 | 0.86 |
| Ryzen 5 5600G | 18 | 78 | 11.1 | 48 | 0.28 | 1.20 |
The 2600 wins every per-dollar column because it costs $45, and you already own it. The number that matters for an upgrade is the delta: about $140 net (after reselling the 2600) buys roughly +4 tok/s of generation and +70 tok/s of prefill. Per watt, the 5600G is the efficiency pick on both phases.
Common pitfalls
- Upgrading the CPU on a 16 GB system. q4_K_M needs about 20 GB. Without a RAM upgrade the new chip swaps just like the old one.
- Forgetting the BIOS. A 5800X or 5600G in a B450/X470 board needs a Zen 3-capable BIOS, flashed while the 2600 is still installed. Our 2600 vs 5800X AM4 upgrade guide walks through the trap, and why the 5800X also needs a cooler of its own.
- Leaving Qwen3's thinking mode on. The default
<think>block is generation-bound, often several hundred tokens: 30–45 seconds at 11–17 tok/s before the answer starts. Add/no_thinkfor anything that isn't reasoning-heavy (model card). - Counting SMT threads.
-t 12on a six-core chip usually runs slower than-t 6.
Verdict matrix
Keep the Ryzen 5 2600 if…
- your prompts are short (chat, quick questions, under ~500 tokens), so generation dominates the wait;
- you haven't yet fixed XMP, dual-channel, or 32 GB. Those come first and cost less;
- the box sits idle most of the day and waiting a minute for a long answer is fine.
Upgrade to the Ryzen 7 5800X if…
- you run RAG, paste documents, or keep system prompts over ~2,000 tokens, where prefill is most of the wait;
- you use it as an agent back end, where every tool call re-reads a long context;
- your board has a Zen 3 BIOS and you also game on it, since the 5800X is the stronger all-rounder.
Jump to the Ryzen 9 3900X if…
- you find one well under the 5800X's price, or your board lacks a Zen 3 BIOS;
- the machine also does heavily threaded non-AI work.
Recommended pick
For the reader asking this question, the Ryzen 7 5800X is the right upgrade, but only after the box has 32 GB of dual-channel DDR4-3200. The reason to go local with a 30B-class model is to feed it your own documents, and that workload is prefill-bound. There, the 5800X cuts the wait for the first token by about 3.5×. What flips it: if your prompts stay short and you mostly chat, the upgrade buys only about 4 tok/s of generation. Keep the 2600 and put the $140 into RAM.
Bottom line
Qwen3 30B-A3B is the model that makes a GPU-less AM4 desktop a real local assistant. It runs on a Ryzen 5 2600 today at roughly 11–17 tok/s, provided you have 32 GB of RAM and XMP turned on. Upgrading to a 5800X barely changes how fast words appear. It changes how long you wait before they start, and for long-prompt work that's the number that matters.
Live price comparison
For current pricing and buy buttons on both chips, see the Ryzen 5 2600 vs Ryzen 7 5800X head-to-head, plus the Ryzen 7 5800X and Ryzen 5 2600 benchmark pages.
Related guides
- Best Parts for a CPU-Offload Local LLM Build
- Best Budget Local LLM PC Parts in 2026
- Which LLMs Fit an RTX 3060 12GB: Cheat Sheet
- Best Hardware for Running MoE LLMs Locally
- Ryzen 5 2600 vs Ryzen 5 5600G for CPU-Only Llama 3.2 3B
Citations and sources
- llamafile discussion #450, "Lots of CPU benchmarks": 5950X Mixtral/Mistral rows, 3900X memory sweep, 3550H, 5600X and 7940HS thread sweeps (accessed 2026-09-18)
- Qwen/Qwen3-30B-A3B model card: 30.5B total / 3.3B active, 128 experts with 8 active, 48 layers, 4 KV heads,
/no_think(accessed 2026-09-18) - unsloth/Qwen3-30B-A3B-GGUF and Qwen/Qwen3-30B-A3B-GGUF: quant file sizes (accessed 2026-09-18)
- AMD Ryzen 5 2600 specifications (accessed 2026-09-18)
- AMD Ryzen 7 5800X specifications (accessed 2026-09-18)
- AMD Ryzen 9 3900X specifications (accessed 2026-09-18)
- AMD Ryzen 5 5600G specifications (accessed 2026-09-18)
- Wikipedia: DDR4 SDRAM: per-channel bandwidth (accessed 2026-09-18)
- llama.cpp issue #13217: Ryzen 5 5600U CPU-only Qwen3-30B-A3B run, 57.58 tok/s prompt eval / 16.06 tok/s generation, plus the Vulkan iGPU comparison (accessed 2026-09-18)
- llama.cpp llama-bench README and llama-server README: pp/tg measurement and KV-cache quantization flags (accessed 2026-09-18)
Editorial synthesis: SpecPicks did not bench-test these CPUs for this article. Measured figures are credited inline to their public sources. Figures marked as estimates are our bandwidth- and scaling-based projections, and the method is shown next to each table.
