All glossary terms

Serving

SLO latency budget

The latency targets a service commits to, split per phase: time to first token, speed while reading, and the whole reply. Every serving change argues from it.

An SLO (service level objective) is a promised ceiling on how long users wait, usually stated at a percentile such as p95 rather than on average. A latency budget is the SLO turned inside out: instead of one number at the end, the wait is divided into phases and each phase gets an allowance it must stay inside.

The split matters because the phases are paid differently. The wait for the first token is prefill plus queue, so its budget is spent by shortening prompts, prefix caching, and admission. The wait per token is decode, so its budget is spent by bandwidth: quantization, batch sizes, faster cards. A budget without that split cannot say which change to make, and an optimization argued without a budget cannot say whom it helps.

The percentile is the honest part. Mean latency hides the user having the worst morning; p95 names them. Budgets therefore attach to p95 (and often p99 for the first token), and capacity is sized so the tail holds, which is also why they are watched as queues and headroom rather than reviewed as a monthly average.

A worked example

A chat product commits that a 500-token reply finishes within 20 s at p95, and that prefill takes 0.4 s at p95.

  1. Decode budget: 20 - 0.4 = 19.6 s for the 500 tokens.
  2. Required decode rate at the tail: 500 / 19.6 = 25.5, so the SLO implies about 26 tokens per second per user at p95.
  3. Any change that drops per-user decode below 26 at the tail - a bigger batch, a cheaper card - breaks the commitment, whatever it gains elsewhere.

The commitment converts into a decode floor of about 26 tokens per second per user at p95, a number any serving change can be judged against.

Where this shows up

Test yourself

Related terms