All glossary terms

Serving

Backpressure

Signals from a saturated server that ask callers to slow down - bounded queues, admission limits, refusals - so overload surfaces early, not as wait times.

A server under overload has two things it can give away: refusals and wait time. A design without backpressure gives away wait time, because every arrival is admitted and the queue absorbs the rest, so the overload shows up as a latency breach minutes later rather than a refusal at the door. A design with backpressure gives away refusals: a bounded queue, an admission limit, or a rejection at the gateway keeps the wait inside known limits and points the pain at the request that arrived last, not at every request already in flight.

The mechanics are simple and they stack. A bounded queue caps how much wait can accumulate behind admission. An admission limit caps what enters the pool at all, sized to what the KV cache and batch can actually carry. Load shedding is the visible version - refusing or redirecting arrivals above the limit with a clear status, so the caller can retry, route elsewhere, or degrade on purpose.

In AI serving the stakes are higher than a slow response, because the resource being protected is also the most expensive one. A request admitted into a saturated pool holds a KV cache seat and stretches the wait of every request behind it; the same request refused at the gateway costs nothing. That asymmetry - refuse early, serve calmly - is the whole argument, and it is why the rate limiter, the queue depth meter, and the shed decision are usually one design rather than three.

A worked example

A pool where each request needs 0.1 s of service sits at rising utilization. Queue wait under the common approximation is service time x utilization / (1 - utilization), which is the arithmetic that makes the refusal cheap.

  1. At 80 percent utilization: 0.1 x 0.8 / 0.2 = 0.4 s of wait for the requests that wait.
  2. At 95 percent: 0.1 x 0.95 / 0.05 = 1.9 s - almost five times the wait for fifteen more points of utilization.
  3. At 98 percent: 0.1 x 0.98 / 0.02 = 4.9 s, and beyond 100 the queue never drains at all.
  4. A refusal at the gateway instead of these admissions turns that curve into a flat, known, cheap rejection.

Wait grows super-linearly as a pool saturates - 0.4 s, 1.9 s, 4.9 s at 80, 95 and 98 percent - which is the arithmetic case for refusing at the edge instead of queueing to failure.

Where this shows up

Related terms