BetterBench 0.2.3

Qwen3-8B on vLLM 0.9.3, single 4090

BetterBench v1 corpus, 20 measured passes after 2 warmup

Qwen3-8BvLLM 0.9.3RTX 4090 24GB, driver 560.35corpusv120 measured passes after 2 warmupquantmxfp4kv cachefp8tensor parallel1
Self-reported — not verified by launch80

Decode holds 142 t/s weighted across eight categories. The concurrency knee sits at 8 requests, past which aggregate throughput flattens while p99 TTFT nearly doubles. Prefill scales cleanly to 32K and falls off at 64K.

Read these first

Decode throughput by categoryMedian per-pass decode rate at batch = 1, relative to the fastest category in this run.
Single-stream, batch = 1
categorypassesTTFT p50TTFT p99PP t/s medITL 1% lowITL medITL 99% highdecode med±IQR
code20312498421096.1151.0203.4148.26.1
prose202984713980101.3142.8188.0139.74.4
reasoning20341602405588.4138.2191.7136.18.9
summarization20489744512099.0145.6196.2141.95.2

† a percentile on this row rests on too few samples to be reliable.

Concurrency sweep
levelaggregate t/sTTFT p50TTFT p99per-req decode med
1142.4304512142.4
4421.6486918105.4
8612.8918184076.6
16634.11974412039.6
Prefill sweep · cold prefix cache
target depthPP medianTTFT p50
2K38400.52
8K42101.94
32K41657.88
64K310221.14

Setup

One RTX 4090 on an otherwise idle host, vLLM 0.9.3 in the official container, mxfp4 weights with an fp8 KV cache.

The BetterBench v1 corpus was used unmodified. Nonce prefixes were left on, so prefill numbers reflect a cold prefix cache rather than accidental cache hits.

Reading the concurrency table

Aggregate throughput gains almost nothing between 8 and 16 concurrent requests, while p99 TTFT more than doubles. For an interactive workload the useful ceiling on this box is 8.