All laws

§ 112Performance

Kingman's Formula

As a server's utilization approaches 100%, the time work spends waiting for it climbs steeply, and variability in arrivals and service multiplies the climb.

J. F. C. Kingman

Keep in mind

Keep headroom wherever someone is waiting on the answer

What to do

For anything latency-sensitive (a service, a shared build runner, the on-call engineer), set a utilization ceiling below saturation (well below for a single server or a single person; a pool of interchangeable workers can run closer to full) and add capacity or shed load when you cross it, not after latency has already spiked. Cut variability too: smaller, more uniform jobs wait less at the same load. Set the ceiling by weighing what a slower answer costs against what the idle capacity costs, and raise it where waiting is cheap.

Why it happens

Kingman's approximation for the mean wait in a single-server queue (G/G/1) is E(Wq) ≈ (ρ/(1−ρ)) · ((ca² + cs²)/2) · τ, where ρ is utilization, ca and cs are the coefficients of variation of arrival and service times, and τ is the mean service time; it is also called the VUT equation, after its three factors. The utilization term does the damage: ρ/(1−ρ) is 4 at 80%, 9 at 90% and 19 at 95%, so going from 90% to 95% busy roughly doubles the wait with nothing else changed. Those multipliers, like the formula, are for one server; a pool of several servers sharing a queue keeps the wait short up to a higher utilization before it starts to climb. Variability multiplies it, so bursty arrivals and uneven job sizes lengthen the wait at any load. The approximation is generally accurate, and most accurate for a system close to saturation. Little's Law says L = λW but not why W grows; Kingman's formula shows where the growth comes from. The same arithmetic plausibly applies to people: a team whose every hour is booked tends to make every new request wait. That is an inference from the model, not something Kingman measured.

In practice

In February 2026 DNSimple described version 10 of erldns, its authoritative DNS server: when scheduler utilization goes above 90%, the server reduces the rate at which it accepts work. The post asks why not push for 100% utilization and answers with Kingman's formula, saying queueing latency grows hyperbolically with utilization, so the 90% ceiling is a deliberate trade-off to stay away from the latency cliff.

Read the account

When it stops applying

Headroom Costs Money: spare capacity is paid for whether or not anyone uses it, so whoever owns the budget pushes utilization up, and often rightly; the Google SRE book says "Efficient use of resources is important any time a service cares about money." and treats provisioning as a large lever on a service's total cost, so where a slower answer costs little, running hotter frees money for work that matters more.

Source

J. F. C. Kingman, The single server queue in heavy traffic (Mathematical Proceedings of the Cambridge Philosophical Society, 1961) — the heavy-traffic approximation for the mean wait in a single-server queue. Beyer, Jones, Petoff & Murphy (eds.), Site Reliability Engineering (O'Reilly, 2016), Introduction, "Efficiency and Performance" — the counter, the pressure to use resources efficiently.

Read the source

Cite this

Hammurabi, § 112, “Kingman's Formula.” https://kanywst.github.io/hammurabi/laws/kingmans-formula/

BibTeX
@misc{hammurabi-kingmans-formula,
  title  = {Kingman's Formula},
  author = {{Hammurabi contributors}},
  note   = {Hammurabi, § 112},
  url    = {https://kanywst.github.io/hammurabi/laws/kingmans-formula/}
}

Text under CC BY-SA 4.0: credit Hammurabi and link the article.

Read in a column

Related laws

Suggest a correction on GitHub