IN THIS BREAKDOWN · 10 SECTIONS
You can read 21% of this breakdown.
The paper in one minute
Users feel a system is fluid when it responds within about 100 ms. Google's services answer interactively while consulting datasets spread across thousands of servers. Jeffrey Dean and Luiz André Barroso explain why keeping the slowest responses fast, the tail of the latency distribution, gets harder as systems grow, and what Google does about it.
Variability has many sources: machines shared among applications, background daemons, global resources such as network switches, maintenance work such as log compaction and garbage collection, multiple layers of queueing, CPUs throttling to stay within power limits, solid-state drives pausing for their own garbage collection (which can raise read latency a hundredfold), and power-saving modes.
Scale amplifies it. A request that fans out to many servers and must wait for all of them is as slow as the slowest. If each server answers in 10 ms but takes a second 1% of the time, a request touching one server is slow 1% of the time; touching 100 servers, 63% of the time. Even with one slow response in 10,000, a request touching 2,000 servers is slow almost one time in five.
Eliminating every source of variability is impractical, so the authors argue for tail-tolerant techniques, by analogy with fault tolerance. Hedged requests send a second copy to another replica if the first has not answered after a short delay, and use whichever answers first. Tied requests enqueue copies on two servers that cancel each other when one starts. Across requests, micro-partitions, selective replication of hot items and latency-induced probation of slow machines rebalance load. In search, good-enough results skip the slowest servers and canary requests try a query on one or two servers before sending it to thousands.
Research notes: the problem, approach and results
of requests that wait on 100 servers exceed one second when each server is slow 1% of the time
99.9th-percentile time to read 1,000 BigTable values across 100 servers, with hedged requests after 10 ms
extra requests sent to get that reduction
Interactive services fan a request out to hundreds or thousands of servers and must answer within tens of milliseconds. Each server has occasional slow responses from shared resources, background work, garbage collection, power management and queueing. At scale, these rare events dominate the user's experience, and they cannot all be eliminated.
Build tail-tolerant systems, as fault-tolerant systems are built from unreliable parts: reduce variability where practical, then mask the rest. Within a request, send backup copies (hedged requests) or cross-cancelling copies (tied requests). Across requests, use micro-partitions, selective replication and probation for slow machines. In search, return good-enough results and test queries on canary servers first.
With 1% slow responses per server, 63% of requests touching 100 servers are slow. Hedging after 10 ms cut a BigTable benchmark's 99.9th-percentile latency from 1,800 ms to 74 ms with 2% more requests; tied requests cut 99.9th-percentile reads by 38% with under 1% extra disk load.
Why it matters to an FDE
LLM systems are fan-out systems. A RAG answer waits on retrieval from several indexes, a reranker and a model; an agent step waits on several tool calls; a batch of model requests waits for the slowest one. The paper's arithmetic applies.
Measure percentiles, not averages. A system that is fast on average can be slow for most users once a request touches several services. Report p50, p95 and p99 per step and per request.
Each added dependency raises the tail. Ten parallel calls, each slow 1% of the time, make about one request in ten slow. Count dependencies before promising a latency target.
Hedge reads, not writes. Duplicating a retrieval or a cache lookup after its 95th-percentile time costs about 5% more calls. Duplicating model generations costs real money, and duplicating actions with side effects needs idempotency first.
Good enough often is. If one of five retrieval sources is slow, answering from four is usually better than making the user wait. Decide in advance which components are optional.
Understand the mechanism. Try it on a real problem.
Unlock this breakdown and 99 more papers.
Premium opens every paper in full, plus every answer, concept, course and guide on the site. One payment for six months of access.
6 months · One payment · No auto-renewal
- ◇1 architecture diagram
- </>1 runnable code experiment
- ▦1 results table
- ?5 interview questions with answers
- 03Key takeaways
Sources of variability, the fan-out arithmetic, each technique with its numbers, and misreadings
Free account - 04How it works
Hedged and tied requests, cross-request adaptations, search-specific techniques, and mutations
Premium - 05The numbers that matter
The fan-out curve, the Google measurements, and the cost of each technique
Premium - 06Try it yourself
Reproduce the fan-out curve, then simulate hedging, good-enough answers and correlated slowness
Premium - 07Where it breaks
Correlated slowness, extra load, side effects, Google-specific evidence and small slips
Premium - 08Using it on a deployment
Applying tail-tolerant techniques to a RAG pipeline or agent
Premium - 09Interview angles
Five questions this paper prepares you for, with answer hints
Premium - 10Read next
Where to go from here on this site
Premium
