Numbers to Know
A cheat sheet of the numbers behind every back-of-the-envelope estimate: sizes, latencies, throughput of common components, availability, costs and the handful of formulas that turn them into decisions. The goal is not precision β it is the right order of magnitude, fast, with the assumptions said out loud.
Read the labels
Three kinds of numbers live on this page. Exact values (powers of two, seconds in a day, nines of availability) are always true. Classic latency values come from well-known references12 and are still good intuition. Everything marked β illustrative or approximate (2026) depends on hardware, workload, configuration and provider: use it to reason, then measure your own system (that is what Hands-on 2 is for) and check the providers' price calculators.
The theory behind these numbers is in Estimation βΊ Numbers, Queueing, Percentiles and Availability math. The component catalog has key numbers per component, and the playground uses the same orders of magnitude in its defaults.
Powers of two and units
| Power | Exact | β Power of ten | Name | Example |
|---|---|---|---|---|
| 2^10 | 1,024 | 10^3 | KiB (kilo) | A short JSON response |
| 2^20 | 1,048,576 | 10^6 | MiB (mega) | A photo |
| 2^30 | 1,073,741,824 | 10^9 | GiB (giga) | A movie; RAM of a small VM |
| 2^40 | β 1.1 Γ 10^12 | 10^12 | TiB (tera) | A large database |
| 2^50 | β 1.1 Γ 10^15 | 10^15 | PiB (peta) | A big company's data lake |
- Bits vs bytes: networks are quoted in bits per second; 1 Gbps = 125 MB/s; 10 Gbps = 1.25 GB/s.
- KB vs KiB: storage vendors use powers of ten (1 KB = 1,000 B); operating systems often use powers of two (1 KiB = 1,024 B). For estimates, the 2.4% difference does not matter.
- Shortcut: thousand β million β billion β trillion is KB β MB β GB β TB. "1 million users Γ 1 KB each = 1 GB".
Time
| Quantity | Exact | Rounded for estimates |
|---|---|---|
| Seconds in a minute | 60 | β |
| Seconds in an hour | 3,600 | β 4 Γ 10^3 |
| Seconds in a day | 86,400 | β 10^5 |
| Seconds in a month (30 days) | 2,592,000 | β 2.5 Γ 10^6 |
| Seconds in a year | β 31,557,600 | β 3 Γ 10^7 (Ο Γ 10^7) |
Requests per day β requests per second
| Per day | Average per second (Γ· 86,400) | Rule of thumb (Γ· 10^5) | Peak at 3Γ | Peak at 10Γ |
|---|---|---|---|---|
| 1 million | β 11.6 | 10 | β 35 | β 116 |
| 10 million | β 116 | 100 | β 350 | β 1,160 |
| 100 million | β 1,157 | 1,000 | β 3,500 | β 11,600 |
| 1 billion | β 11,574 | 10,000 | β 35,000 | β 116,000 |
In the interview
"One day is about 10^5 seconds, so 100 million requests a day is about 1,000 per second on average; I'll size for a peak of 3Γ unless the traffic is spiky β a flash sale is not 3Γ, it's 100Γ in one minute."
Latency
The classic table
The table popularized by Jeff Dean and Peter Norvig12. Hardware has changed (see the next table), but the ratios are what you need to remember: memory is about 1,000Γ faster than an SSD read, a round trip inside a data center is about 1,000Γ faster than a round trip across an ocean.
| Operation | Classic value | Notes |
|---|---|---|
| L1 cache reference | 0.5 ns | |
| Branch mispredict | 5 ns | |
| L2 cache reference | 7 ns | |
| Mutex lock/unlock | 25 ns | |
| Main memory reference | 100 ns | |
| Compress 1 KB with a fast compressor | 3 Β΅s | |
| Send 1 KB over a 1 Gbps network | 10 Β΅s | |
| Read 4 KB randomly from an SSD | 150 Β΅s | |
| Read 1 MB sequentially from memory | 250 Β΅s | |
| Round trip within the same data center | 500 Β΅s | |
| Read 1 MB sequentially from an SSD | 1 ms | |
| Disk (HDD) seek | 10 ms | |
| Read 1 MB sequentially from an HDD | 20 ms | |
| Send a packet California β Netherlands β California | 150 ms |
2020s approximations
Approximate (2026), for typical cloud hardware3. Measure your own environment before trusting any of these to more than a factor of 2β3.
| Operation | β Value | Notes |
|---|---|---|
| Main memory reference | β 100 ns | Has barely changed in 15 years |
| Read 1 MB sequentially from memory | β 10β50 Β΅s | Tens of GB/s of memory bandwidth |
| NVMe SSD random 4 KB read | β 10β100 Β΅s | Cloud network-attached volumes: β 0.5β2 ms |
| Read 1 MB sequentially from NVMe | β 0.1β0.3 ms | β 3β7 GB/s |
| Round trip inside an availability zone | β 0.1β0.5 ms | |
| Round trip between AZs of one region | β 1β2 ms | |
Redis GET over the network (same AZ) | β 0.2β1 ms | Mostly network; Redis itself is microseconds |
| Indexed lookup in PostgreSQL (row in memory) | β 1β5 ms end to end | Network + parsing + execution |
| Light travels 1,000 km in fiber | β 5 ms one way | β 200,000 km/s in glass |
| Round trip SΓ£o Paulo β US East (Virginia) | β 110β130 ms | Physics: β 7,500 km each way |
| Round trip SΓ£o Paulo β Western Europe | β 180β220 ms | |
| TLS handshake (new connection) | 1β2 extra round trips | Why connection reuse and edge termination matter |
| LLM time to first token (hosted model) | β 0.2β2 s | β illustrative; then β 30β150 tokens/s |
Why BoxOffice puts a CDN in SΓ£o Paulo
A fan in SΓ£o Paulo loading the event page from an origin in Virginia pays β 120 ms per round trip; a TLS connection plus the request costs 2β3 round trips β 300 ms before the first byte. From a CDN edge in SΓ£o Paulo the same round trips cost β 5β20 ms each.
Throughput of common components
Order of magnitude, illustrative, depends on hardware and workload
These are rough per-instance figures for simple operations on a reasonably sized machine. Payload size, query complexity, durability settings (fsync), TLS, connection count and the client itself move them by 10Γ in either direction. Use them to know whether you need 1 box or 100, never as a promise. Values from vendors' documented limits are marked documented.
| Component | β Throughput per instance | Notes |
|---|---|---|
| Nginx / Envoy (proxy, small responses) | 10^4 β 10^5 req/s | CPU and TLS bound |
| App server (CRUD with one DB call) | 10^2 β 10^4 req/s | Usually limited by the DB or by threads Γ latency (Little's Law) |
| PostgreSQL / MySQL, simple indexed reads | 10^4 β 10^5 queries/s | Large instance, data in memory |
| PostgreSQL / MySQL, write transactions | 10^3 β 10^4 tx/s | fsync and contention bound; one hot row: far fewer |
| Redis (single instance) | β 10^5 ops/s; up to β 10^6 with pipelining | Single-threaded command loop; cluster to scale |
| Memcached | 10^5 β 10^6 ops/s | Multi-threaded |
| Kafka broker | β 10^5 β 10^6 small msgs/s; hundreds of MB/s | Batching and compression matter |
| RabbitMQ node | 10^4 β 10^5 msgs/s | Lower with persistence and confirms |
| Cassandra / ScyllaDB node | 10^4 β 10^5 writes/s | Scales roughly linearly with nodes |
| Elasticsearch / OpenSearch node | 10^2 β 10^4 queries/s | Depends heavily on the query |
| WebSocket server | 10^4 β 10^5+ open connections | Memory bound; mostly idle connections |
| Amazon DynamoDB partition | 3,000 read units / 1,000 write units per s | documented per-partition limit |
| Amazon S3 prefix | 3,500 writes / 5,500 reads per s | documented per prefix; add prefixes to scale |
| AWS Lambda | 1,000 concurrent executions per region | documented default account quota (can be raised) |
| Network link | 1 Gbps = 125 MB/s; 10 Gbps = 1.25 GB/s | Exact conversions |
Storage sizes
| Item | β Size | Notes |
|---|---|---|
| ASCII character | 1 B | UTF-8: 1β4 B per character |
| Integer (int32 / int64) | 4 B / 8 B | |
| UUID | 16 B binary, 36 B as text | Store binary when you can |
| Timestamp | 8 B | PostgreSQL timestamptz |
| A BoxOffice seat row (ids, status, hold) | β 100 B | Plus index overhead |
| A user or order row | β 0.5β1 KB | With a few text fields |
| A short post (280 characters + metadata) | β 0.5β1 KB | |
| Structured log line | β 200 B β 2 KB | |
| Embedding vector, 1,536 dims, float32 | β 6 KB | dims Γ 4 B |
| Thumbnail | β 10β50 KB | |
| Photo (JPEG / WebP) | β 0.2β3 MB | |
| Web page (HTML + JSON, no images) | β 50β200 KB | |
| 1 minute of video at 1 Mbps (β 480p) | 7.5 MB | 1 Mbps Γ 60 s Γ· 8 |
| 1 minute of video at 5 Mbps (β 1080p) | β 38 MB | |
| 1 minute of video at 20 Mbps (β 4K) | β 150 MB | |
| 1 minute of audio at 128 kbps | β 1 MB |
Storage per year = writes per day Γ size Γ 365 Γ replication factor (often 3) Γ growth margin. Example: 1 million orders a day Γ 1 KB Γ 365 Γ 3 β 1.1 TB per year.
Availability
| Availability | Downtime per year | per month (30.4 days) | per week | per day |
|---|---|---|---|---|
| 99% ("two nines") | 3.65 days | 7.31 hours | 1.68 hours | 14.4 min |
| 99.5% | 1.83 days | 3.65 hours | 50.4 min | 7.2 min |
| 99.9% ("three nines") | 8.77 hours | 43.8 min | 10.1 min | 1.44 min |
| 99.95% | 4.38 hours | 21.9 min | 5.04 min | 43.2 s |
| 99.99% ("four nines") | 52.6 min | 4.38 min | 1.01 min | 8.64 s |
| 99.999% ("five nines") | 5.26 min | 26.3 s | 6.05 s | 0.86 s |
Year = 365.25 days. An SLO over a 28-day window allows 0.1% Γ 40,320 min β 40.3 min at 99.9%4.
Combining components
- In series (all must work): \(A = A_1 \times A_2 \times \dots \times A_n\). Three services at 99.9% β β 99.7%.
- In parallel (any one is enough): \(A = 1 - (1 - A_1)(1 - A_2)\cdots\). Two replicas at 99% β 99.99% (if failures are independent β they often are not).
- Expected availability from failure rates: \(A = \dfrac{MTTF}{MTTF + MTTR}\). Halving the time to repair is as good as doubling the time between failures.
Formulas
| Formula | Meaning | Example |
|---|---|---|
| \(L = \lambda W\) (Little's Law) | Items in the system = arrival rate Γ time in the system | 1,000 req/s Γ 0.2 s = 200 requests in flight β β 200 threads/connections |
| \(\rho = \lambda / \mu\) | Utilization = arrival rate Γ· service capacity | 800 req/s on a capacity of 1,000 β Ο = 0.8 |
| \(W = \dfrac{S}{1 - \rho}\) (M/M/1) | Time in system grows without bound as Ο β 1 | S = 10 ms: Ο 0.5 β 20 ms; 0.9 β 100 ms; 0.99 β 1 s |
| Servers \(= \lceil \lambda_{peak} / (\mu_{1} \cdot \rho_{target}) \rceil\) | Capacity with headroom | 7,000 req/s Γ· (1,000 Γ 0.7) β 10 servers (+1 for failures) |
| DB load \(= \lambda (1 - h)\) | Cache misses reach the database | 10,000 req/s, h = 0.95 β 500 req/s |
| \(\bar{t} = h\,t_{cache} + (1-h)\,t_{db}\) | Average latency with a cache | 0.95 Γ 1 ms + 0.05 Γ 20 ms = 1.95 ms |
| \(P(\text{slow}) = 1 - (1 - p)^n\) | Fan-out tail amplification | p = 1%, n = 100 calls β 63% of requests hit a slow call |
| \(R + W > N\) | Quorum reads see the latest write | N = 3, W = 2, R = 2 |
| \(2f + 1\) nodes | Consensus tolerates f failures | 3 nodes tolerate 1; 5 tolerate 2 |
| Speedup \(= \dfrac{1}{(1-p) + p/n}\) (Amdahl) | Parallel speedup is limited by the serial part | p = 0.9, n = 10 β β 5.3Γ; n β β β 10Γ |
| Error budget \(= (1 - SLO) \times\) window | Unreliability you may spend | 99.9% over a rolling 28 days β 40.3 min |
| Bandwidth \(= \lambda \times\) size | Bytes per second on the wire | 1,000 req/s Γ 100 KB = 100 MB/s = 800 Mbps |
The queueing and percentile formulas are derived (and plotted) in Estimation βΊ Queueing and Percentiles.
Cloud costs (illustrative)
Approximate, 2026, check the providers' calculators
Typical on-demand list prices in a US region, rounded, to compare orders of magnitude between design options. Real prices vary by provider, region (SΓ£o Paulo is usually more expensive than US East), instance family, commitments and discounts, and they change. Use the official calculators (AWS Pricing Calculator, Google Cloud Pricing Calculator, Azure Pricing Calculator) for anything that matters.
| Item | β Price | β Per month |
|---|---|---|
| General-purpose VM | USD 0.04β0.05 per vCPU-hour (with β 4 GB RAM per vCPU) | β USD 30β35 per vCPU |
| Managed PostgreSQL, 2 vCPU / 8 GB, single AZ | USD 0.15β0.40 per hour | β USD 110β300; β 2Γ for multi-AZ |
| Managed Redis node, β 6β13 GB | USD 0.15β0.35 per hour | β USD 110β250 |
| Managed load balancer | β USD 0.02β0.03 per hour + usage units | β USD 20β40 + traffic |
| Object storage (standard tier) | β USD 0.02β0.026 per GB-month | 1 TB β USD 20β26 |
| Data egress to the internet | β USD 0.05β0.12 per GB | 10 TB β USD 500β1,200 |
| CDN delivery | β USD 0.02β0.09 per GB | Falls with volume |
| Cross-AZ traffic | β USD 0.01 per GB each way | Chatty services add up |
| NAT gateway | β USD 0.045 per hour + β USD 0.045 per GB | β USD 33 + traffic |
| Serverless functions | β USD 0.20 per million invocations + β USD 0.0000167 per GB-second | 10 M calls Γ 100 ms Γ 512 MB β USD 10 |
| Transactional email | β USD 0.10 per 1,000 emails | 1 M emails β USD 100 |
| LLM, small/fast models | β USD 0.05β1 per million input tokens | Output tokens cost several times more |
| LLM, frontier models | β USD 1β15 per million input tokens; β USD 5β75 per million output tokens | Prompt caching and batch APIs cut this |
Cost of an LLM request β input tokens Γ input price + output tokens Γ output price. 2,000 input + 300 output tokens on a model at USD 3 / USD 15 per million β USD 0.006 + 0.0045 β USD 0.01 per request β 1 million requests β USD 10,000. That is why the LLM gateway caches and routes to smaller models. More in Cloud-native βΊ FinOps.
Worked example: the BoxOffice flash sale
A stadium show goes on sale at 10:00: 2 million fans, 60,000 seats. Assumptions are said out loud and rounded; each one could be challenged by the interviewer.
| Step | Assumption | Estimate |
|---|---|---|
| Fans per seat | 2 M Γ· 60 k | β 33 β most fans will not get a ticket |
| Orders | 2 seats per order on average | β 30,000 orders |
| Read peak | 2 M fans refresh the event page every β 15 s in the first minutes | 2 Γ 10^6 Γ· 15 β 130,000 req/s |
| Origin load behind a CDN | hit ratio 99% (page cached for a few seconds) | β 1,300 req/s at the origin |
| Edge bandwidth | β 100 KB per page view | 130,000 Γ 100 KB β 13 GB/s β 100 Gbps β a CDN job, never the origin's |
| Seat writes without a waiting room | everyone tries in the first 1β2 minutes | 60 k holds + retries in β 100 s β β 10^3 writes/s on the same rows β contention |
| Waiting room admission | admit 2,000 fans per minute into checkout | β 33 fans/s; at β 50% conversion β 1,000 orders/min β sold out in β 30 min |
| Seat writes with the waiting room | 60 k holds + 60 k confirmations over β 30 min | β 70 writes/s β easy for one PostgreSQL primary |
| Fans inside checkout (Little's Law) | 33 fans/s Γ β 5 min per session | β 10,000 concurrent sessions; seat holds expire after 10 min |
| Payment concurrency (Little's Law) | β 17 orders/s Γ p99 of 3 s | β 50 calls in flight β a pool of β 100 with headroom |
| Emails | 30 k tickets over 30 min | β 17 emails/s β behind a queue, within the provider's quota |
| Storage | 30 k orders Γ 1 KB | β 30 MB β storage is not the problem |
| CDN cost | β 5 MB per fan (first load + 40 refreshes) Γ 2 M | β 10 TB β USD 200β900 (approximate, 2026) |
The estimate points straight at the design: the read spike belongs to the CDN, the contention belongs to a waiting room that turns the crowd into a steady flow, the seat itself must be a strongly consistent row with an atomic hold, and payment and email are bounded, asynchronous dependencies. The full design is in the ticketing case study; try the numbers in the flash-sale scenario of the playground.
-
Jonas BonΓ©r, "Latency Numbers Every Programmer Should Know" (compilation of values by Jeff Dean and Peter Norvig), gist.github.com/jboner/2841832.Β β©β©
-
Jeff Dean, "Designs, Lessons and Advice from Building Large Distributed Systems", keynote at LADIS 2009; Peter Norvig, "Teach Yourself Programming in Ten Years", norvig.com/21-days.html.Β β©β©
-
Colin Scott, "Latency Numbers Every Programmer Should Know" (interactive, extrapolated by year), colin-scott.github.io; cloud providers' documentation for network and storage figures.Β β©
-
Betsy Beyer et al. (eds.), Site Reliability Engineering, O'Reilly, 2016 β Appendix A, "Availability Table", sre.google/books.Β β©