A Request's Life in vLLM V1 A technical analysis of vLLM 0.32.0 (commit 5df63a7) finds that the engine's per-token overhead outside the forward pass — msgpack decoding, detokenization, stop-string checks, JSON encoding and socket writes — is paid on a single asyncio event loop per API server process, and that one Python API server against a mock engine ran out of CPU at about 37,000 streamed tokens per second. Past that point the engine's batch stopped growing and the cost surfaced as time to first token, a number most people read as an engine problem. The analysis also documents that vLLM's documented process formula of A + DP + N (plus one when DP > 1) disagrees with the launch code in three places: `-tp 1` starts 2 processes rather than 3, `-dp 2` forces the `mp` backend even at TP=1 because `ParallelConfig` checks `world_size_across_dp > 1` first, and a supervisor process from `run_multi_api_server` is omitted from the docs entirely. A Request's Life in vLLM V1 Part 2 of a ten-part series on serving engines from the inside. Pinned to vLLM 0.32.0 5df63a7 https://github.com/vllm-project/vllm/tree/5df63a7203cdb9328d824a27b682e77c7b9928be . Part 1 https://hiraditya.github.io/posts/anatomy-of-an-llm-serving-engine/ named the five layers and where vLLM and SGLang cut them into processes. This part follows one streamed chat request through vLLM’s cut. vLLM V1 keeps its busy loop away from HTTP. API server processes own the request from the socket to the last SSE event, and they do the tokenizing. One engine-core process per data-parallel rank runs the scheduler and owns the KV ledger. One worker process per GPU runs the model. The consequence is easy to miss: every per-token cost that isn’t the forward pass is paid in the API server, on a single asyncio event loop per process. That covers msgpack decoding, detokenization, stop-string checks, JSON encoding and the socket write. And nothing in the path pushes back on the engine when that loop falls behind. Against a mock engine, one Python API server ran out of CPU at about 37,000 streamed tokens per second. Past that point the engine’s batch stopped growing, and the cost landed in time to first token, a number most people read as an engine problem. The process tree, four ways Before tracing a request, count the processes it can cross. vLLM’s architecture overview gives a formula: A + DP + N processes, plus one when DP 1, where A is the API server count, DP the data-parallel size and N the GPU count.