← All reports

Report · 2026-10-29

Prefix caching on one H100: Qwen3-30B-A3B-Instruct-2507 FP8, vLLM 0.31.0

1× NVIDIA H100 80GB HBM3 Qwen3-30B-A3B-Instruct-2507-FP8 FP8 weights, BF16 KV cache vllm 0.31.0 TTFT p99 ≤ 2.0 s · TPOT p99 ≤ 50 ms

Quick-mode measurement on TokenWatt's production API node, one H100 SXM on RunPod Secure Cloud (October 29, 2026): Qwen3-30B-A3B-Instruct-2507 FP8 on vLLM 0.31.0 with default automatic prefix caching, chat-like workload (median 1,024 input / 256 output tokens). The same SLO search ran four times with 0%, 50%, 75% and 90% of every prompt drawn from eight shared prefixes; cache hit rates are vLLM's own prefix-cache counters (0%, 48.7%, 74.0%, 89.2%). Capacity within p99 TTFT ≤ 2 s and p99 TPOT ≤ 50 ms rose from 11.5 to 21.0 requests per second. Accuracy was checked on the same node in separate runs (GSM8K 96% quick, 94.5% full); these runs skipped the accuracy gate.

ConclusionUnder SLO (TTFT p99 ≤ 2.0 s · TPOT p99 ≤ 50 ms), serving the same billable throughput as 64 cards on No prompt reuse (0% cache hits) takes: with 50% shared prefix (48.7% cache hits), 64 → 46 cards and 24% less GPU board energy per token; with 75% shared prefix (74.0% cache hits), 64 → 38 cards and 36% less GPU board energy per token; with 90% shared prefix (89.2% cache hits), 64 → 36 cards and 43% less GPU board energy per token.

Results

Each value is the median of 2 runs.

No prompt reuse (0% cache hits)50% shared prefix (48.7% cache hits)75% shared prefix (74.0% cache hits)90% shared prefix (89.2% cache hits)

SLO goodput

output tok/s per node · higher is better
No prompt reuse (0% cache hits)4,740No prompt reuse (0% cache hits): 4,740 output tok/s per node
50% shared prefix (48.7% cache hits)6,67850% shared prefix (48.7% cache hits): 6,678 output tok/s per node
75% shared prefix (74.0% cache hits)8,04175% shared prefix (74.0% cache hits): 8,041 output tok/s per node
90% shared prefix (89.2% cache hits)8,50890% shared prefix (89.2% cache hits): 8,508 output tok/s per node

Tokens per joule

tok/J, GPU board power · higher is better
No prompt reuse (0% cache hits)7.81No prompt reuse (0% cache hits): 7.81 tok/J, GPU board power
50% shared prefix (48.7% cache hits)10.3250% shared prefix (48.7% cache hits): 10.32 tok/J, GPU board power
75% shared prefix (74.0% cache hits)12.2875% shared prefix (74.0% cache hits): 12.28 tok/J, GPU board power
90% shared prefix (89.2% cache hits)13.6690% shared prefix (89.2% cache hits): 13.66 tok/J, GPU board power

Decode bandwidth utilization

% of rated HBM bandwidth
No prompt reuse (0% cache hits)61%No prompt reuse (0% cache hits): 61 % of rated HBM bandwidth
50% shared prefix (48.7% cache hits)67%50% shared prefix (48.7% cache hits): 67 % of rated HBM bandwidth
75% shared prefix (74.0% cache hits)76%75% shared prefix (74.0% cache hits): 76 % of rated HBM bandwidth
90% shared prefix (89.2% cache hits)81%90% shared prefix (89.2% cache hits): 81 % of rated HBM bandwidth

Axis runs to 100% of rated bandwidth.

GPU board power

kW, steady state
No prompt reuse (0% cache hits)0.61No prompt reuse (0% cache hits): 0.61 kW, steady state
50% shared prefix (48.7% cache hits)0.6550% shared prefix (48.7% cache hits): 0.65 kW, steady state
75% shared prefix (74.0% cache hits)0.6675% shared prefix (74.0% cache hits): 0.66 kW, steady state
90% shared prefix (89.2% cache hits)0.6290% shared prefix (89.2% cache hits): 0.62 kW, steady state

GPU board power only — excludes CPUs, memory, NICs, fans and PSU losses.

All numbers

Cards for equal goodput = 64 × reference goodput ÷ configuration goodput, rounded up.

MetricNo prompt reuse (0% cache hits)50% shared prefix (48.7% cache hits)75% shared prefix (74.0% cache hits)90% shared prefix (89.2% cache hits)
Engine buildvllm 0.31.0 · KV BF16vllm 0.31.0 · KV BF16vllm 0.31.0 · KV BF16vllm 0.31.0 · KV BF16
Decode bandwidth utilization (MBU)61%67%76%81%
GPU board power0.61 kW0.65 kW0.66 kW0.62 kW
SLO goodput4,740 tok/s6,678 tok/s8,041 tok/s8,508 tok/s
Tokens per joule7.8110.3212.2813.66
TTFT p99380 ms294 ms248 ms257 ms
TPOT p9940.6 ms46.1 ms42.1 ms39.4 ms
SLO metyesyesyesyes
Accuracy (none)————
Accuracy Δ vs. reference————
Cards for equal goodput64463836

Setup

Any change to these fields makes it a different report.

Accelerator
1× NVIDIA H100 80GB HBM3
Rated HBM BW
3.35 TB/s per GPU
Driver / runtime
595.91.07
Host
RunPod Secure H100 SXM (TokenWatt API production node)
Engine
vllm 0.31.0
Kernel libraries
vllm/vllm-openai:v0.31.0 --max-model-len 32768 --enable-auto-tool-choice --tool-call-parser hermes
Model
Qwen3-30B-A3B-Instruct-2507-FP8 (MoE)
Quantization
FP8 weights, BF16 KV cache
Parallelism
1 replica × TP1
Workload trace
chat-mix-v1
Input tokens
median 1,024 · p90 4,096
Output tokens
median 256 · p90 1,024
Arrival
Poisson, rate swept to SLO boundary
Power source
GPU board power sum (NVIDIA) · 1 Hz · 120 s steady state
Runs per config
2 (variance band ±1.5%)
Accuracy gate
none · max drop 1.0 pts

Not covered

Do not extrapolate this report to the following.

  • Whole-node power (no BMC access on this host)
  • Context lengths beyond the chat-mix-v1 trace
  • Quick mode: short windows, few repeats
  • Accuracy: no accuracy gate was run

Reproduce

Run on the same hardware and software versions. Results should fall within ±1.5%.

shell
tokenwatt run --spec live-qwen3-30b-a3b-prefix-cache.spec.yaml --label 'prefix-0' --role other --out runs/prefix-0.json
tokenwatt run --spec live-qwen3-30b-a3b-prefix-cache.spec.yaml --label 'prefix-0.5' --role other --out runs/prefix-0-5.json
tokenwatt run --spec live-qwen3-30b-a3b-prefix-cache.spec.yaml --label 'prefix-0.75' --role other --out runs/prefix-0-75.json
tokenwatt run --spec live-qwen3-30b-a3b-prefix-cache.spec.yaml --label 'prefix-0.9' --role other --out runs/prefix-0-9.json

tokenwatt report runs/prefix-0.json runs/prefix-0-5.json runs/prefix-0-75.json runs/prefix-0-9.json --title 'Prefix caching on one H100: Qwen3-30B-A3B-Instruct-2507 FP8, vLLM 0.31.0'

Download raw JSON