Skip to content
About
Main content
Recurring principle

Little's Law

Concurrency = Throughput × Latency.

What it is

Little's Law is a conservation identity: no assumptions about distributions or independence. If 100 customers per hour enter a shop and each stays 30 minutes, then on average 100 × 0.5 = 50 customers are inside. It cannot be wrong.

WhereForm
NVMe queue depthIOPS = QD ÷ latency
Memory-level parallelismbandwidth = outstanding misses × 64 B ÷ 80 ns
Bandwidth-delay productin-flight = bandwidth × RTT
HereL = λW

When something is slow and you cannot find the bottleneck, first solve for the missing term. Usually the concurrency is too low, which no average-based metric shows.

You can usually measure two of the three terms. Queue depth hard to measure? Compute L = λW.

Example (a limited pool). A database connection pool has 50 connections and each query holds one for 100 ms. Then λ_max = L / W = 50 / 0.1 = 500 queries per second. If traffic doubles to 1,000/s, W cannot halve, so requests wait, and the waiting time becomes part of W. A pool of 50, a thread pool of 200, a max_concurrent_requests setting: each is you choosing L. By choosing it, you chose the relation between throughput and latency. You cannot choose both.

From Physical Substrate & Performance Laws › Little's Law and queues

Little's Law connects latency and throughput. It told you how many requests to keep in flight on a fast SSD. Here it sizes your connection pool, your consumer concurrency, your credit window (how much a receiver allows the sender to send) and your in-flight request limit. Same algebra, different units.

From Data Movement › The epistemic limit

Where it appears

In 9 mechanisms. Each says what the mechanism is about, then how this principle shows up there, in its own words.

Made on the same pages most often.