tools / capacity-headroom

Capacity Headroom Calculator

Headroom today and time left at current growth.

Time to target ceiling

months

Utilisation now

Headroom to target

Time to 100%

Growth multiple

Key facts

Utilisationu = peak load / max capacity
Time to a limitmonths = ln(limit / load) / ln(1 + g)
Doubling timeAbout 70 ÷ growth % — 5%/month doubles in ~14 months
Use peak, not averageCapacity runs out at the busiest hour, not the daily mean
Target ceilingBelow 100%, because latency climbs steeply near saturation

Worked example

Peak is 600 req/s, the system tops out at 1,000, you want to stay under 80%, and traffic grows 5% a month.

now     = 600 / 1000              = 60%
target  = 0.80 × 1000             = 800 req/s
months  = ln(800 / 600) / ln(1.05) ≈ 5.9
to 100% = ln(1000 / 600) / ln(1.05) ≈ 10.5

You have about six months before crossing the target, and under a year before running out. If new capacity takes three months to land, start in month two.

Where "max capacity" comes from

Measure it with a load test that ramps until latency breaks your SLO, not until the system falls over. That point is your real capacity. The Universal Scalability Law can project it for larger setups.

FAQs

Which target ceiling should I use?

Lower for latency-sensitive services and single points of failure; higher for batch work. Also leave room to lose one node: with 4 nodes, losing one removes 25% of capacity.

Growth isn't steady. Does compound growth still work?

Use it as a baseline, then add known spikes — launches, seasonal peaks — on top. Re-fit growth from the last few months each quarter.

Should I measure headroom per resource?

Yes. CPU, memory, connections and downstream quotas each have their own ceiling. The smallest headroom is the one that matters.

Sources

  1. Gunther, N. J. — Guerrilla Capacity Planning (Springer, 2007)
  2. Beyer, B. et al. — Site Reliability Engineering (O'Reilly, 2016)

Related