Thought Toys · Computation & information · Exhibit 58

Why a busy line explodes

A checkout that's half busy barely has a queue. Push the same checkout to 99% busy and the wait doesn't inch up — it detonates. The line isn't made of load; it's made of randomness bumping into a server that's almost always busy.

The line now, and the wait vs. how busy the server is predicted wait live simulation

Arrivals & service
Try it
your turn — drag toward 100% and watch the line explode

What you're seeing

One server — a checkout, a help desk, a CPU core — handling jobs one at a time. Jobs arrive at random moments, and each takes a random amount of time to serve. Utilization ρ is simply the fraction of time the server is busy: arrivals per hour divided by how many it could finish per hour. You'd think the wait would track how busy the server is — 90% busy, a moderate wait; 99% busy, a slightly longer one. It doesn't. The wait tracks one divided by the idle fraction, and idle time is exactly what vanishes as you approach full: the average customer waits about one service time when the server is half busy, nine times that at 90% busy, and ninety-nine at 99%. Halve the remaining slack and you don't add a little wait — you roughly double it.

Drag utilization up and the amber curve barely lifts across the whole calm middle, then turns and rockets toward a wall at 100%. That wall is real: past ρ=1 the jobs arrive faster than they can be cleared, so no steady wait exists at all — the line just grows forever. The reason a busy line is so much worse than a half-busy one is randomness: when a burst of arrivals lands on a server that was already nearly always occupied, there's no idle gap to absorb it, so the backlog it creates takes a long time to drain. Flip to Clockwork — perfectly evenly spaced arrivals, perfectly equal service times — and at the same 99% utilization the line empties to nothing. Same load, no randomness, no wait. The line was never made of busyness. It was made of variability.

The rule, exactly. With arrival rate λ and service rate μ, utilization is ρ = λμ. For random (Poisson arrivals, exponential service — an M/M/1 — one server, memoryless arrivals and service) queues the mean number waiting and the mean wait in line are Lq = ρ²⁄(1ρ)    Wq = ρ ⁄ (μ(1ρ)), so in units of one service time the wait is ρ⁄(1ρ): 1 at 50% busy, 9 at 90%, 99 at 99%. (Little's law L=λW ties these together.) Verified in node (improve/verify/58-mm1-queue.js): a discrete-event simulation streaming the same random arrivals and service times through one server has a running-average wait that converges onto ρ⁄(1ρ) at 50%, 80% and 90% busy; the closed forms satisfy Little's law; and the wait is monotone and blows up hyperbolically (99% → 99 service times). Negative control: make arrivals and service perfectly regular (a D/D/1 queue) and the wait is exactly zero at 50%, 80% and 95% busy — so it is variability, not load, that makes the line; and at exactly ρ=1 the simulated average never settles, it keeps climbing as more customers are served (no steady state).

Also in Computation & information: The set that's only sure when it says no →

All 20 in Computation & information
  1. 101Noise sets a speed limit, not an accuracy limit.
  2. 111Any party of six hides a trio
  3. 120How one bit of ink makes a grey
  4. 125The ambulance that arrives sooner by going slower
  5. 131Every number is a sum of Fibonacci numbers
  6. 23Sorting algorithms
  7. 24PageRank & the random surfer
  8. 25Huffman coding
  9. 26Dijkstra's shortest path
  10. 33The learning-rate cliff
  11. 36A* pathfinding
  12. 44Diffie–Hellman key exchange
  13. 49Freeze too fast, stay stuck
  14. 56Catch one error, miss the next
  15. 57Why more processors stop helping
  16. 58Why a busy line explodes — you are here
  17. 59The set that's only sure when it says no
  18. 60The fit that memorizes instead of learns
  19. 61When the wire breaks, pick one
  20. 82Your computer can't hold one tenth

← the cabinet · Thought Toys — a cabinet of explorable explanations. Exhibit 58.