Can two realtime tenants retain lower TTFT while standard traffic surges on the same model server?
Answer. With request-count admission, both realtime tenants stayed below 600 ms p95 TTFT while the standard burst absorbed the delay.
Replay this package with Flow Control Flight Recorder
With request-count admission, the two realtime tenants had median surge p95 TTFT of 509 ms and 556 ms. The standard burst had median surge p95 TTFT of 25,892 ms.
The matched utilization-detector runs produced realtime p95 TTFT between 4,567 ms and 5,117 ms. The observed ranges did not overlap across the tested detectors. Three repeats support descriptive medians and ranges rather than a formal statistical-significance claim.
Every request succeeded, flow control engaged during all nine runs, and prefix caching remained off.
| File | Contents |
|---|---|
summary.csv |
Per-run outcomes, throughput, TTFT, end-to-end latency, and TPOT. |
window-summary.csv |
Baseline, surge, and recovery metrics. |
request-results.csv |
One sanitized row per request. |
traffic-samples.csv |
Issued, completed, and outstanding requests over time. |
system-metrics.csv |
Queue, saturation, vLLM, KV-cache, preemption, and cache metrics. |
run-evidence.csv |
Headers, route counts, cache state, flow-control engagement, and proof gates. |
run-config.json |
Images, topology, engine settings, detector settings, and traffic method. |
analysis.json |
Matched detector medians, ranges, run inventory, and claim boundary. |
This scenario used GuideLLM 0.7.0, random routing, one model replica, and cache off. Three matched repeats compared request-count admission at 128 requests and 10% headroom with utilization detection at queue depths 2 and 5.
python3 pipeline/guidellm_trace.py \
--scenario-file benchmark-data/upstream-flow-control-v0.9.0/production-scenarios/consolidation/scenario.json \
--scenario consolidation --out-dir /tmp/consolidation --traffic-seed 42
for REPEAT in 1 2 3; do
python3 pipeline/run_guidellm_scenario.py \
--manifest /tmp/consolidation/manifest.json \
--run-dir "results/consolidation/request-count/repeat-$REPEAT" \
--prefix "consolidation-request-count-repeat-$REPEAT" \
--namespace "${NAMESPACE:-flow-control}" \
--runner-pod "${RUNNER_POD:-flow-control-benchmark-runner}" \
--expected-detector concurrency-detector \
--expected-concurrency-mode requests --expected-max-concurrency 128 \
--expected-headroom 0.10 --expected-picker random-picker \
--expected-prefix-cache off --expected-model-replicas 1 \
--http-version 1 --guidellm-worker-processes 4 \
--drain-after-done --drain-timeout-s 300 --recover-multiline-sse
for QUEUE_DEPTH in 2 5; do
python3 pipeline/run_guidellm_scenario.py \
--manifest /tmp/consolidation/manifest.json \
--run-dir "results/consolidation/queue-depth-$QUEUE_DEPTH/repeat-$REPEAT" \
--prefix "consolidation-queue-depth-$QUEUE_DEPTH-repeat-$REPEAT" \
--namespace "${NAMESPACE:-flow-control}" \
--runner-pod "${RUNNER_POD:-flow-control-benchmark-runner}" \
--expected-detector utilization-detector \
--expected-concurrency-mode requests --expected-queue-depth "$QUEUE_DEPTH" \
--expected-headroom 0.00 --expected-picker random-picker \
--expected-prefix-cache off --expected-model-replicas 1 \
--http-version 1 --guidellm-worker-processes 4 \
--drain-after-done --drain-timeout-s 300 --recover-multiline-sse
done
done
scenario.json contains only the consolidation traffic.
run-config.json defines the three detector configurations.