vLLM cluster throughput calculator — any box, any link, any model — article mark

vLLM cluster throughput calculator — any box, any link, any model

A single-file calculator for vLLM serving speed on hardware you compose: N boxes × (GPU × count), the GPU-to-GPU link inside a box, the NIC and fabric between boxes. Load any of 30 catalogued models (or type your own), pick the weight and KV format, TP / PP / DP / EP, max_model_len, gpu_memory_utilization and MTP depth, and get the memory map per GPU, decode tok/s per request and aggregate against context for concurrency 1 … 256, prefill tok/s and TTFT against prompt length, the step-time breakdown (memory · compute · network · overhead) and a ranked comparison of every preset configuration.

Open fullscreen

Calibration

Thirteen measured points, three machines. Residual = modelled ÷ measured − 1 with the shipped constants.

setupmeasuredmodellederr
1× DGX Spark · Qwen3.8-27B NVFP4 · no spec · depth 011.5 tok/s11.50 %
1× Spark · 27B · MTP 3 · depth 0 / 32K / 100K18.8 / 20.4 / 18.921.7 / 20.0 / 17.1+16 / −2 / −9 %
1× Spark · 27B · prefill pp20482,083 tok/s2,110+1 %
1× Spark · Qwen3.8-Flash-Next NVFP4 · MTP 3 · depth 0 / 32K / 100K32.2 / 32.9 / 27.334.1 / 32.3 / 29.2+6 / −2 / +7 %
1× Spark · Flash-Next · prefill pp20481,742 tok/s1,768+1 %
1× RTX 5090 · 27B NVFP4 · no spec · ~4K58.6 tok/s55.0−6 %
2× Spark TP 2 over ConnectX-7 200GbE · Flash-Next · MTP 4 · 24 req × 2K+512305 tok/s aggregate287−6 %
2× Spark TP 2 · Flash-Next · MTP 4 · 1 req @ 48K47–53 tok/s47.5−5 %
1× Spark · 27B FP8 · no spec (not in the fit)7.94 tok/s7.1−11 %

Spark points: Spark Arena llama-benchy runs (pp2048 / tg128, vLLM, NVFP4). RTX 5090 and the 2× Spark points: production traffic and one controlled run on the author’s machines. The FP8 point is from SGLang vs vLLM on a DGX Spark.

Fitted constants

Five free constants against twelve points. Leave-one-out = refit without the point, then predict it.

constantvaluefitted fromleave-one-out
effective bandwidth fraction0.73every decode point−11 … +18 %
MFU (dense GEMM)0.33Spark 27B pp2048 only−23 %
MoE expert-kernel efficiency0.71Flash-Next decode, 1× and 2× Spark−11 … +9 %
MoE routing cost per token per layer5.7 µsFlash-Next pp2048 only+55 %
per-forward launch overhead5.5 msintercept of step time vs bytes, decode points—
fixed constantvaluesource
MTP acceptance α per draft position0.846measured 3.165 tokens/step at k=3 → α + α² + α³ = 2.165; tokens/step = (1 − α^(S+1)) ÷ (1 − α) (Leviathan et al. 2023, eq. 1)
all-reduce base latency6.6 µsNCCL baseLat[Ring][LL], tuning.cc v2.27.7
per-step latency NVLink / PCIe / network0.6 / 1.0 / 2.7 µsNCCL hwLat[…][Ring][LL], same file; 5.0 µs per network step with one GPU per box (hwLat[NET][Tree][LL])
per-step latency C2C / Thunderbolt / USB4 / Infinity Fabric—no published value: the page asks for one before it simulates a TP group over that link
lm_head + embedding bytes2 Bassumed (ModelOpt and llm-compressor recipes leave them in BF16)
CUDA-graph pool—not counted until typed in from a vLLM log

Limits:

Every constant is editable in the page; the calibration table recomputes with the override.

The model

No fallbacks

A null in the catalog (an unstated TFLOPS figure, the B200’s BF16 rate, Llama 3.1’s vocab) blocks the simulation with missing: <field> (reason) until you type a value in the specs editor; the page never substitutes a guess. With Qwen3.8-27B NVFP4 at 32K, 8 of 32 presets compute; the rest are blocked by such nulls or by no FP4 tensor path (Ampere, Hopper). TPU, Gaudi, Intel Arc and Apple parts are listed with their sources but marked not modelled: vLLM reaches them through other backends and the constants were fitted on CUDA kernels. Parts with values derived from rack totals or dev-blog figures carry that in their note.

Sources

The sources panel in the page lists every GPU, box, link, model and quant with its URL and the note on how each number was read. Spark Arena · NVIDIA product pages and the RTX Blackwell whitepaper · HuggingFace config.json files · NCCL tuning.cc · PCI-SIG and IEEE rates · the vLLM docs for gpu_memory_utilization, chunked prefill and expert parallelism.

Questions? Let's Chat :)

systems