Seeing Through the Stack: End-to-End and Fine-Grained Tracing in llm-d
Production llm-d deployments usually already expose Prometheus metrics, GPU utilization, and latency histograms. Those signals answer whether the fleet is healthy. They rarely answer the question that dominates incident response and optimization work:
For this slow or failed request, which hop decided what, and where did the time actually go?
That gap is structural. llm-d’s value sits in control-plane decisions: precise prefix-cache scoring, load-aware selection, prefill/decode (P/D) disaggregation, multi-hop proxies. Fleet aggregates cannot reconstruct those decisions after the fact. Distributed tracing can.
This post walks through two complementary capabilities now available across the llm-d stack:
- End-to-end (E2E) distributed tracing: one
trace_idacross Gateway → EPP → KV-cache → P/D proxy → vLLM - Fine-grained tracing: first-party spans at the decision points that make well-lit paths real
Together they move observability from “the cluster looks busy” to “this request chose this pod for this cache score, ran prefill here, and spent most of its time to first token waiting in the decode queue.”






























