Testing LLM Concurrency on Consumer Hardware (RTX 5060) A benchmark test by an unnamed developer found that LLM concurrency scales on consumer hardware, with pooled agents multiplying throughput by up to 8.7x, and the top result being MiniCPM5 1B at 983 tok/s (433% of its solo speed). The worst performer was Qwen3.5 0.8B with multi-token prediction enabled, which never scaled beyond ~180 tok/s, while the same model without MTP hit 787 tok/s. Across 384 runs on an RTX 5060 8GB system, there were zero errors, but time-to-first-token degraded from milliseconds to tens of seconds under load. Testing LLM Concurrency on Consumer Hardware I recently watched a YouTube video of someone testing a server-grade LLM hardware setup, pushing it to see just how much concurrency it could actually handle. It got me thinking: what can your own — perhaps a bit above-average — “gaming” / “workstation” PC really do? Especially within the limits of my RTX 5060 and its fast but limited 8GB of VRAM. I’ve been thinking about building a game or simulation driven by a high agent count, and I wanted to know what the feasible limit really is. That question brought me to these tests — and the results you’ll find below: the rig, the method, and every number and chart for all 16 models, individually and side by side. A note on authorship: that opening paragraph is my own words — the rest of this post is mostly AI-generated, though I have carefully gone over all of it, and every number has been checked against the raw benchmark data before publishing. And the dataset isn’t done yet — I plan to keep testing more models and will add them to the list as I do, so keep a lookout for new entries in the sidebar. TL;DR Concurrency scales on consumer hardware — pooled agents multiplied throughput 8.7x at best. The top all-in result was MiniCPM5 1B at 983 tok/s 433% of its solo speed . The worst was a flatline: Qwen3.5 0.8B with MTP enabled never scaled at all ~180 tok/s at any concurrency because multi-token prediction serializes requests — with MTP off the same model hit 787 tok/s. Thinking models hide a huge share of their budget in reasoning content up to 100% , and time-to-first-token degrades from milliseconds to tens of seconds under load. Errors across all 384 runs: zero . Test rig One desktop, fully loaded while every run executed. This is a dirty daily-driver environment — not a clean lab bench — and that was the point: the results are what real consumer hardware actually does. Ryzen 9 9950X3D Zen 5 V-Cache flagship. Core affinity is hard-locked to CCD0 so every LLM loop stays on the 3D V-Cache cores — zero cross-CCD thread-hopping on the Infinity Fabric. 32GB DDR5 6400 UCLK locked 1:1 with the memory controller for the lowest possible system↔GPU transfer latency during CPU-side MoE offload and high-concurrency prefill pooling. RTX 5060 8GB GDDR7 Core + VRAM overclocked to squeeze maximum raw bandwidth out of the 128-bit bus. Every model was fully offloaded — the GPU is the engine room. 3 monitors, always on 2x ultrawide + 1x 4K primary, with a hardware-accelerated multi-tab Chrome profile running through every single benchmark run. LM Studio configuration Identical server settings for every model — differences MTP, KV cache quant, context caps are called out per model on its page. ⚒ Decode & scheduling - GPU offloadMax for model - CPU threads8 · CCD0 - Eval batch size2048 - Physical batch size512 - Max concurrency24 - Flash attention On ● Memory & context - Context length34304 · max - Unified KV cache On - Offload KV to GPU On - Keep model in memory On - Try mmap On - KV cache quantF16 · Q8 0 · Q4 0 ⚡ Decoding strategy - Speculative decoding Off - MTP exceptionQwen3.5 0.8B - KV quant rulesF16 ≤1.5B · Q8 0 2B · Q4 0 3B+ - Context cap32k or 8k · per model Methodology The harness is a zero-dependency Node agent loop benchmark/benchmark.js plus a sweep driver benchmark/sweep.js streaming against LM Studio’s local OpenAI-compatible endpoint. Each model got 24 sequential runs — one per concurrency level 1–24 — of 60 seconds wall time . Each agent holds a 12,000-token budget , runs a multi-turn loop until budget or timeout, and samples temperature 0.9 . Token-level timing captures TTFT time to first token , per-stream token gaps, content vs reasoning tokens, and per-agent/combined throughput. Reasoning is counted differently per model family: reasoning content streams MiniCPM5, Qwen-DeepSeek, Chronos, Qwen3.5 , inline