Little's Law
It is a conservation identity: no assumptions about distributions or independence.
- Concurrency
- average number of items inside the system (the concurrency)
- Throughput
- arrival rate (items per second)
- Latency
- average time an item stays in the system (residence time, including waiting)
How it behaves
One input on the horizontal axis, the others held fixed.
Data table
| Latency W (seconds) | series | Throughput λ (per second) |
|---|---|---|
| 1 µs | L = 1 in flight | 1M |
| 1.19 µs | L = 1 in flight | 841K |
| 1.41 µs | L = 1 in flight | 708K |
| 1.68 µs | L = 1 in flight | 596K |
| 2 µs | L = 1 in flight | 501K |
| 2.37 µs | L = 1 in flight | 422K |
| 2.82 µs | L = 1 in flight | 355K |
| 3.35 µs | L = 1 in flight | 299K |
| 3.98 µs | L = 1 in flight | 251K |
| 4.73 µs | L = 1 in flight | 211K |
| 5.62 µs | L = 1 in flight | 178K |
| 6.68 µs | L = 1 in flight | 150K |
| 7.94 µs | L = 1 in flight | 126K |
| 9.44 µs | L = 1 in flight | 106K |
| 11.2 µs | L = 1 in flight | 89.1K |
| 13.3 µs | L = 1 in flight | 75K |
| 15.8 µs | L = 1 in flight | 63.1K |
| 18.8 µs | L = 1 in flight | 53.1K |
| 22.4 µs | L = 1 in flight | 44.7K |
| 26.6 µs | L = 1 in flight | 37.6K |
| 31.6 µs | L = 1 in flight | 31.6K |
| 37.6 µs | L = 1 in flight | 26.6K |
| 44.7 µs | L = 1 in flight | 22.4K |
| 53.1 µs | L = 1 in flight | 18.8K |
| 63.1 µs | L = 1 in flight | 15.8K |
| 75 µs | L = 1 in flight | 13.3K |
| 89.1 µs | L = 1 in flight | 11.2K |
| 106 µs | L = 1 in flight | 9.44K |
| 126 µs | L = 1 in flight | 7.94K |
| 150 µs | L = 1 in flight | 6.68K |
| 178 µs | L = 1 in flight | 5.62K |
| 211 µs | L = 1 in flight | 4.73K |
| 251 µs | L = 1 in flight | 3.98K |
| 299 µs | L = 1 in flight | 3.35K |
| 355 µs | L = 1 in flight | 2.82K |
| 422 µs | L = 1 in flight | 2.37K |
| 501 µs | L = 1 in flight | 2K |
| 596 µs | L = 1 in flight | 1.68K |
| 708 µs | L = 1 in flight | 1.41K |
| 841 µs | L = 1 in flight | 1.19K |
| 1 ms | L = 1 in flight | 1K |
| 1.19 ms | L = 1 in flight | 841 |
| 1.41 ms | L = 1 in flight | 708 |
| 1.68 ms | L = 1 in flight | 596 |
| 2 ms | L = 1 in flight | 501 |
| 2.37 ms | L = 1 in flight | 422 |
| 2.82 ms | L = 1 in flight | 355 |
| 3.35 ms | L = 1 in flight | 299 |
| 3.98 ms | L = 1 in flight | 251 |
| 4.73 ms | L = 1 in flight | 211 |
| 5.62 ms | L = 1 in flight | 178 |
| 6.68 ms | L = 1 in flight | 150 |
| 7.94 ms | L = 1 in flight | 126 |
| 9.44 ms | L = 1 in flight | 106 |
| 11.2 ms | L = 1 in flight | 89.1 |
| 13.3 ms | L = 1 in flight | 75 |
| 15.8 ms | L = 1 in flight | 63.1 |
| 18.8 ms | L = 1 in flight | 53.1 |
| 22.4 ms | L = 1 in flight | 44.7 |
| 26.6 ms | L = 1 in flight | 37.6 |
| 31.6 ms | L = 1 in flight | 31.6 |
| 37.6 ms | L = 1 in flight | 26.6 |
| 44.7 ms | L = 1 in flight | 22.4 |
| 53.1 ms | L = 1 in flight | 18.8 |
| 63.1 ms | L = 1 in flight | 15.8 |
| 75 ms | L = 1 in flight | 13.3 |
| 89.1 ms | L = 1 in flight | 11.2 |
| 106 ms | L = 1 in flight | 9.44 |
| 126 ms | L = 1 in flight | 7.94 |
| 150 ms | L = 1 in flight | 6.68 |
| 178 ms | L = 1 in flight | 5.62 |
| 211 ms | L = 1 in flight | 4.73 |
| 251 ms | L = 1 in flight | 3.98 |
| 299 ms | L = 1 in flight | 3.35 |
| 355 ms | L = 1 in flight | 2.82 |
| 422 ms | L = 1 in flight | 2.37 |
| 501 ms | L = 1 in flight | 2 |
| 596 ms | L = 1 in flight | 1.68 |
| 708 ms | L = 1 in flight | 1.41 |
| 841 ms | L = 1 in flight | 1.19 |
| 1 s | L = 1 in flight | 1 |
| 1 µs | L = 12 | 12M |
| 1.19 µs | L = 12 | 10.1M |
| 1.41 µs | L = 12 | 8.5M |
| 1.68 µs | L = 12 | 7.15M |
| 2 µs | L = 12 | 6.01M |
| 2.37 µs | L = 12 | 5.06M |
| 2.82 µs | L = 12 | 4.26M |
| 3.35 µs | L = 12 | 3.58M |
| 3.98 µs | L = 12 | 3.01M |
| 4.73 µs | L = 12 | 2.54M |
| 5.62 µs | L = 12 | 2.13M |
| 6.68 µs | L = 12 | 1.8M |
| 7.94 µs | L = 12 | 1.51M |
| 9.44 µs | L = 12 | 1.27M |
| 11.2 µs | L = 12 | 1.07M |
| 13.3 µs | L = 12 | 900K |
| 15.8 µs | L = 12 | 757K |
| 18.8 µs | L = 12 | 637K |
| 22.4 µs | L = 12 | 536K |
| 26.6 µs | L = 12 | 451K |
| 31.6 µs | L = 12 | 379K |
| 37.6 µs | L = 12 | 319K |
| 44.7 µs | L = 12 | 269K |
| 53.1 µs | L = 12 | 226K |
| 63.1 µs | L = 12 | 190K |
| 75 µs | L = 12 | 160K |
| 89.1 µs | L = 12 | 135K |
| 106 µs | L = 12 | 113K |
| 126 µs | L = 12 | 95.3K |
| 150 µs | L = 12 | 80.2K |
| 178 µs | L = 12 | 67.5K |
| 211 µs | L = 12 | 56.8K |
| 251 µs | L = 12 | 47.8K |
| 299 µs | L = 12 | 40.2K |
| 355 µs | L = 12 | 33.8K |
| 422 µs | L = 12 | 28.5K |
| 501 µs | L = 12 | 23.9K |
| 596 µs | L = 12 | 20.1K |
| 708 µs | L = 12 | 17K |
| 841 µs | L = 12 | 14.3K |
| 1 ms | L = 12 | 12K |
| 1.19 ms | L = 12 | 10.1K |
| 1.41 ms | L = 12 | 8.5K |
| 1.68 ms | L = 12 | 7.15K |
| 2 ms | L = 12 | 6.01K |
| 2.37 ms | L = 12 | 5.06K |
| 2.82 ms | L = 12 | 4.26K |
| 3.35 ms | L = 12 | 3.58K |
| 3.98 ms | L = 12 | 3.01K |
| 4.73 ms | L = 12 | 2.54K |
| 5.62 ms | L = 12 | 2.13K |
| 6.68 ms | L = 12 | 1.8K |
| 7.94 ms | L = 12 | 1.51K |
| 9.44 ms | L = 12 | 1.27K |
| 11.2 ms | L = 12 | 1.07K |
| 13.3 ms | L = 12 | 900 |
| 15.8 ms | L = 12 | 757 |
| 18.8 ms | L = 12 | 637 |
| 22.4 ms | L = 12 | 536 |
| 26.6 ms | L = 12 | 451 |
| 31.6 ms | L = 12 | 379 |
| 37.6 ms | L = 12 | 319 |
| 44.7 ms | L = 12 | 269 |
| 53.1 ms | L = 12 | 226 |
| 63.1 ms | L = 12 | 190 |
| 75 ms | L = 12 | 160 |
| 89.1 ms | L = 12 | 135 |
| 106 ms | L = 12 | 113 |
| 126 ms | L = 12 | 95.3 |
| 150 ms | L = 12 | 80.2 |
| 178 ms | L = 12 | 67.5 |
| 211 ms | L = 12 | 56.8 |
| 251 ms | L = 12 | 47.8 |
| 299 ms | L = 12 | 40.2 |
| 355 ms | L = 12 | 33.8 |
| 422 ms | L = 12 | 28.5 |
| 501 ms | L = 12 | 23.9 |
| 596 ms | L = 12 | 20.1 |
| 708 ms | L = 12 | 17 |
| 841 ms | L = 12 | 14.3 |
| 1 s | L = 12 | 12 |
| 1 µs | L = 80 | 80M |
| 1.19 µs | L = 80 | 67.3M |
| 1.41 µs | L = 80 | 56.6M |
| 1.68 µs | L = 80 | 47.7M |
| 2 µs | L = 80 | 40.1M |
| 2.37 µs | L = 80 | 33.7M |
| 2.82 µs | L = 80 | 28.4M |
| 3.35 µs | L = 80 | 23.9M |
| 3.98 µs | L = 80 | 20.1M |
| 4.73 µs | L = 80 | 16.9M |
| 5.62 µs | L = 80 | 14.2M |
| 6.68 µs | L = 80 | 12M |
| 7.94 µs | L = 80 | 10.1M |
| 9.44 µs | L = 80 | 8.47M |
| 11.2 µs | L = 80 | 7.13M |
| 13.3 µs | L = 80 | 6M |
| 15.8 µs | L = 80 | 5.05M |
| 18.8 µs | L = 80 | 4.25M |
| 22.4 µs | L = 80 | 3.57M |
| 26.6 µs | L = 80 | 3.01M |
| 31.6 µs | L = 80 | 2.53M |
| 37.6 µs | L = 80 | 2.13M |
| 44.7 µs | L = 80 | 1.79M |
| 53.1 µs | L = 80 | 1.51M |
| 63.1 µs | L = 80 | 1.27M |
| 75 µs | L = 80 | 1.07M |
| 89.1 µs | L = 80 | 898K |
| 106 µs | L = 80 | 755K |
| 126 µs | L = 80 | 635K |
| 150 µs | L = 80 | 535K |
| 178 µs | L = 80 | 450K |
| 211 µs | L = 80 | 379K |
| 251 µs | L = 80 | 318K |
| 299 µs | L = 80 | 268K |
| 355 µs | L = 80 | 225K |
| 422 µs | L = 80 | 190K |
| 501 µs | L = 80 | 160K |
| 596 µs | L = 80 | 134K |
| 708 µs | L = 80 | 113K |
| 841 µs | L = 80 | 95.1K |
| 1 ms | L = 80 | 80K |
| 1.19 ms | L = 80 | 67.3K |
| 1.41 ms | L = 80 | 56.6K |
| 1.68 ms | L = 80 | 47.7K |
| 2 ms | L = 80 | 40.1K |
| 2.37 ms | L = 80 | 33.7K |
| 2.82 ms | L = 80 | 28.4K |
| 3.35 ms | L = 80 | 23.9K |
| 3.98 ms | L = 80 | 20.1K |
| 4.73 ms | L = 80 | 16.9K |
| 5.62 ms | L = 80 | 14.2K |
| 6.68 ms | L = 80 | 12K |
| 7.94 ms | L = 80 | 10.1K |
| 9.44 ms | L = 80 | 8.47K |
| 11.2 ms | L = 80 | 7.13K |
| 13.3 ms | L = 80 | 6K |
| 15.8 ms | L = 80 | 5.05K |
| 18.8 ms | L = 80 | 4.25K |
| 22.4 ms | L = 80 | 3.57K |
| 26.6 ms | L = 80 | 3.01K |
| 31.6 ms | L = 80 | 2.53K |
| 37.6 ms | L = 80 | 2.13K |
| 44.7 ms | L = 80 | 1.79K |
| 53.1 ms | L = 80 | 1.51K |
| 63.1 ms | L = 80 | 1.27K |
| 75 ms | L = 80 | 1.07K |
| 89.1 ms | L = 80 | 898 |
| 106 ms | L = 80 | 755 |
| 126 ms | L = 80 | 635 |
| 150 ms | L = 80 | 535 |
| 178 ms | L = 80 | 450 |
| 211 ms | L = 80 | 379 |
| 251 ms | L = 80 | 318 |
| 299 ms | L = 80 | 268 |
| 355 ms | L = 80 | 225 |
| 422 ms | L = 80 | 190 |
| 501 ms | L = 80 | 160 |
| 596 ms | L = 80 | 134 |
| 708 ms | L = 80 | 113 |
| 841 ms | L = 80 | 95.1 |
| 1 s | L = 80 | 80 |
Worked examples, recomputed
Every number the mechanisms quote for this relationship is recomputed from it, so none of them disagrees with it.
- one flush per commit at 1 ms → 1,000 commits/s
- 50 commits per 1 ms flush → 50,000 commits/s
- 300 calls/s × 50 ms → 15 connections busy
- 100 records per call, 1 ms RTT → 100,000 records/s
- 10,000/s × 5 ms → 50 transactions in flight
- 667 conflicting operations/s × 20 ms lag → ≈ 13 in the window
- lag of 2 s → ≈ 1,333
- 200/s with the read-modify-write in application code (50 ms) → 10
- 200/s inside one SQL statement (50 µs) → 0.01
- 2,000,000 events/s × 5 ms of backlog → 10,000 slots
- spilling triples residence: 0.5/s × 180 s → 90 queries holding grants
- 1,500 requests/s × 2 s → 3,000 identical queries
- 2,000 requests/s with a 100 ms deadline → at most 200 in flight
- 1,000 items/s, 200 ms target → 200 queue slots
- a dependency slows to 10 s at 100 req/s → 1,000 threads held
- 1,000 records/s with K = 5 s of disorder → 5,000 in the heap
- one request in flight at 5 ms → 200 records/s per task
- 50 in flight → 10,000 records/s
- 10⁶ events/s × 200 B × 600 s × 2 sides = 240 GB
- 20 planning requests/s × 0.5 s → 10 slots busy
- planning slows to 2 s → 40 slots
- 50,000 spans/s × 10 s traces → 500,000 spans in memory
- 300 sensors an hour waiting 4 h → 1,200 slots held
- 200 credentials/s with a 60-minute TTL → 720,000 live
- closed loop, 200 users, 40 ms → 5,000 requests/s
- the same users at 400 ms → 500 requests/s: the generator slows itself
- open loop at 5,000/s and 400 ms → 2,000 in the system
- a pool at 1,000/s, 10 ms inside → 10 requests held
- 50 connections × 100 ms → 500 queries per second
- QD = 1 at 80 µs → 12,500 IOPS
- 12 misses × 64 B ÷ 80 ns → 9.6 GB/s
- 10 Gb/s × 100 ms → 125 MB in flight
Where it appears
Each mechanism states it in its own names. The general symbol each name stands for is shown with it.
- Physical Substrate & Performance Laws
Why do trade-offs exist at all?
- Physical Substrate & Performance Laws
Why do trade-offs exist at all?
Concurrency = · Throughput = · Latency =
- Physical Substrate & Performance Laws
Why do trade-offs exist at all?
Concurrency = · Bandwidth = · Latency =
- Physical Substrate & Performance Laws
Why do trade-offs exist at all?
Bytes in flight = · Bandwidth = · RTT =
- Data Movement
How do records cross between two systems that have independent rates, independent availability and independent lifetimes, and what are you willing to lose when the assumption underneath the crossing breaks?
- Storage: Physical Organization
What should sit next to what, given that I must decide at write time and find out at read time?
items in flight = · throughput = · latency =
- Persistence & Durability
When a system says "yes, your data is safe", what exactly has it promised, and what did it have to do to keep that promise?
commits_in_flight = · commit_rate = · commit_latency =
- Core Data Structures
How do we choose a data structure when the real cost is set by the hardware, not by Big-O?
F × buffer = · bandwidth = · latency =
- Transactions & Concurrency Control
What happens when many users change the same data at the same time, and how do we keep the result correct?
L = · λ = · W =
- Consistency & Isolation Models
When many users, many objects and many copies exist at once, which histories does the system promise never to show, and who writes the code for the histories it does show?
inconsistencies in flight = · λ_conflicting (operations that can conflict) = · W (lag, snapshot age, TTL) =
- Caching
What happens when we deliberately keep a second copy of data that no protocol forces to be correct?
λ_k (requests for the key) = · W (recompute time) = · L (duplicate recomputes) =
- Distributed Systems Coordination
Who is allowed to decide, and how does everyone else learn the decision without asking?
W (deadline) =
- Fault Tolerance & Delivery Semantics
What is the cheapest thing that can be safely done twice?
- Emergent Failure Dynamics
What happens when nothing is broken, every component is healthy, and the system's own response to stress makes the stress worse?
L_max (queue slots) = · λ_service = · D_target (latency target) =
- Scheduling & Workload Management
Which work runs now, which work waits, and who pays for the waiting?
queue depth = · service rate = · worst-case wait =
- Streaming
What does it cost to remember, when the input never ends?
N (requests in flight) = · RTT =
- Streaming
What does it cost to remember, when the input never ends?
- Metadata, Catalog & Lineage
What can a system prove about its data without reading the data, and how does it know that proof is still true?
- Orchestration & Workflow
How do you make unreliable, unobservable, irreversible side effects behave like a pure function of a time interval?
- Observability & Operations
What is the smallest description of a running system from which we can find a fault, fast enough to matter, at a cost we can still pay while the system is failing?
- Security & Privacy
How do you protect data from someone who watches your design and then chooses how to attack it?
- Measurement & Experimental Method
What would have to be true for this number to mean what I think it means?
N (virtual users) =