Skip to main content

Numbers to Know

The Dozen Numbers Worth Memorizing

In the age of search engines, memorizing numbers sounds quaint — until you watch a strong engineer work. Ask one "can we call the pricing service inside the checkout loop?" and they answer in five seconds: "that's a cross-datacenter hop per item, call it half a millisecond times forty items — 20 ms, fine." No tab was opened. The numbers were loaded, and that's what made the five-second answer — and last lesson's whole envelope method — possible at all.

This is the famous table — the one Jeff Dean's talks made canonical and every engineer eventually tapes to their monitor — brought to 2026 and organized the way memory actually works: a dozen latencies, a handful of throughputs, the sizes of common things, and what one box can do. You've already met the latency ladder twice in this course (the OS chapter built it; the caching chapter weaponized it) — today it becomes part of your permanent equipment, alongside the numbers it was missing.

Two promises about this lesson. First: you don't need the absolute values nearly as much as the ratios — and the ratios are unforgettable once you've used them, which is what the composer below is for. Second: we'll sort the numbers into the two kinds nobody tells you about — the ones that keep shrinking as hardware improves, and the ones that are physics and will outlive every processor ever made.

A one-page engineer's number sheet for 2026, laid out as three columns and an anchors row. The latency column shows the canonical ladder with human-scale translations at one nanosecond equals one second: L1 cache one nanosecond, a heartbeat; RAM one hundred nanoseconds, about 1.7 minutes; NVMe SSD random read about one hundred fifty microseconds, about 1.7 days, with a note that modern NVMe can be five times faster; same-datacenter round trip five hundred microseconds, about six days; disk seek ten milliseconds, about four months, marked unchanged in thirty years, mechanical; cross-continent round trip one hundred fifty milliseconds, about five years, marked physics, will never improve. The throughput column draws horizontal capacity bars: spinning disk about two hundred megabytes per second sequential, flagged as roughly equal to a gigabit link - the same size; SATA SSD five hundred fifty megabytes per second; NVMe three to seven gigabytes per second; a ten gigabit NIC at one point two five gigabytes per second; RAM at tens of gigabytes per second. The sizes column lists bytes worth memorizing: an int or timestamp eight bytes, a UUID sixteen bytes binary but thirty-six as a string, a tweet about two hundred eighty bytes, a JSON response one to ten kilobytes, a photo about half a megabyte, one minute of HD video fifty to one hundred megabytes, and the reflex millions times kilobytes equals gigabytes. The bottom anchors row shows what one box can do: nginx around ten to one hundred thousand requests per second, PostgreSQL five to ten thousand queries per second, Redis one hundred thousand plus operations per second, a commodity box with thirty-two to sixty-four cores and one hundred twenty-eight to five hundred twelve gigabytes of RAM. The palette is dark slate with emerald latency, sky throughput, amber sizes, and violet anchor chips.

The Latency Sheet (and Its Human Scale)

The core dozen, same figures this course has used from the start — with the human-scale trick (pretend 1 nanosecond = 1 second) that turns exponents into gut feelings:

operationtimeat 1 ns = 1 s
L1 cache read~1 nsa heartbeat
RAM read~100 ns~1.7 minutes
compress 1 KB (fast codec)~2 µs~half an hour
SSD random read~150 µs~1.7 days
same-datacenter round trip~500 µs~6 days
read 1 MB sequentially from SSD~1 ms~11 days
disk seek~10 ms~4 months
cross-continent round trip~150 ms~5 years

Three footnotes that make this the 2026 edition rather than the 2012 one:

  • Modern NVMe beats the classic SSD number — high-end drives do random reads in 20–50 µs. Keep ~150 µs as your safe planning number; enjoy the upside when the hardware is newer.
  • The disk-seek number hasn't meaningfully moved in thirty years. It's a mechanical arm physically swinging across a platter; no process shrink helps. That's why SSDs rearranged system design.
  • The network numbers are geography. ~5 ms per 1,000 km (one way, in fibre) — the measurement lesson's physics floor. A transpacific round trip has been ~130–150 ms for decades and will stay there.

If the table feels like a lot, relax — you're not memorizing twelve numbers. You're memorizing about four, plus the ratios between them.

The latency ladder as log bars on a 1 ns = 1 second human scale: L1 1 ns a heartbeat, RAM 100 ns ~1.7 min, SSD 150 µs ~1.7 days, same-DC 500 µs ~6 days, disk seek 10 ms ~4 months (mechanical, frozen), cross-continent 150 ms ~5 years (physics, frozen). Ratio RAM:SSD:seek:ocean ≈ 1:1.5K:100K:1.5M.

Ratios Beat Absolutes

Here's the compression trick: absolute numbers fade, but ratios stick — and ratios are what estimation actually uses. The four worth carving into stone:

  • RAM : SSD ≈ 1 : 1,500. Everything the caching chapter proved hangs on this one gap.
  • SSD : disk seek ≈ 1 : 70. Why "just add an index" (turning seeks into a few reads) and "move it to SSD" were the two great database speedups of a generation.
  • A datacenter hop ≈ 3 SSD reads (~500 µs). Every microservice call you add costs about as much as reading three things from local flash — a ratio that quietly prices your architecture diagrams.
  • A cross-region hop ≈ 300 datacenter hops ≈ 1,000,000 RAM reads. One number that explains CDNs, regional replicas, and why "just call the other region" is never just.

Stack them and you get the full ladder: 1 : 1,500 : 100,000 : 1,500,000 from RAM to SSD to disk-or-DC-crossing to crossing an ocean. Say it in sentences: touching flash costs you a thousand RAM reads; touching another machine costs a few flash reads; touching another continent costs everything. An engineer who knows only that sentence out-estimates one who once memorized the table and forgot it.

The Throughput Sheet

Latency says how long one thing takes; throughput says how much fits through the pipe — and the measurement lesson warned you they're independent axes. The 2026 pipe sizes:

piperateworth noticing
spinning disk, sequential~200 MB/srandom: only ~100–200 IOPS — a thousand times worse
SATA SSD~550 MB/scapped by the SATA interface, not the flash
NVMe SSD~3–7 GB/s (Gen4), ~14 (Gen5)plus 100K–1M random IOPS
1 Gbps NIC125 MB/snote: bits ÷ 8 (⟵ the units guardrail)
10 Gbps NIC1.25 GB/sthe standard datacenter port
RAMtens of GB/sthe pipe that's never the bottleneck first

Two anchors to keep:

  • A spinning disk and a gigabit link are the same size (~150–200 MB/s). One mental slot, two facts.
  • Sequential versus random is a bigger deal than the device. A disk doing sequential streams respectably; the same disk doing random seeks collapses by 1,000×. This is why databases are obsessed with append-only logs and why Kafka (⟵ the async chapter) is fast on spinning rust.

And the practical composite: to move 1 TB across a 10 Gbps link takes 1 TB ÷ 1.25 GB/s ≈ 13 minutes; across a 100 MB/s effective WAN, ~3 hours. Numbers like these are why "ship the drives" is sometimes a real answer (AWS literally sells a truck).

The throughput ladder as pipe bars: HDD sequential ~200 MB/s (≈ a gigabit link), SATA SSD ~550 MB/s, 10 Gbps NIC 1.25 GB/s, NVMe 3-7 GB/s, RAM tens of GB/s. Rule: sequential >> random on any device.

Compose a Request from the Numbers

Reading a table stores it in short-term memory. Spending the numbers stores them for good. Below, build requests out of the actual figures — add RAM reads, SSD reads, disk seeks, datacenter hops, cross-region hops — and watch the total assemble, in real units and on the human scale.

Do this in order:

  1. Load the cache hit preset (one DC hop + one RAM read): ~0.5 ms — the hop is the cost; the RAM read is a rounding error. Now swap in the indexed DB read (a hop + two SSD reads): still under a millisecond. This is why a well-indexed database feels free.
  2. Load old-school disk read — same request, one disk seek instead of SSD: 10 ms, twenty times worse, four months on the human scale. One chip changed; the request changed class.
  3. Load the N+1 bug: twenty-five little queries, each paying its own datacenter hop, instead of one batched query — ~16 ms of pure architecture tax. Then batch it back down and watch 25 hops collapse to 1. You've just debugged the most common performance bug in web history, numerically.
  4. Add a single cross-region hop to anything: 150 ms lands like a hammer — it outweighs a thousand RAM reads a thousand times over. Now you know why every chapter of this course keeps trying to avoid that hop.

Type a latency budget (say, 100 ms) and watch the verdict flip as you compose. The ops/s readout shows the other face of the same number: a worker stuck doing 10 ms disk seeks maxes out at 100 sequential operations a second — throughput is latency's shadow.

The Request Composer. Build a request out of the numbers themselves - add RAM reads, SSD reads, disk seeks, same-datacenter hops, and cross-region hops with plus and minus, and watch the total latency assemble live, translated to the human scale where one nanosecond is one second, alongside the maximum sequential rate one worker could sustain. Load the presets and feel the sheet come alive: a cache hit at half a millisecond, an indexed database read at under a millisecond, the same read against a spinning disk at ten times worse - then the money preset, the N-plus-one query bug, twenty-five round trips where one batched query would do, and a single cross-region call that outweighs a thousand RAM reads a thousandfold. Type a latency budget and the verdict flips as you compose - the exact skill the next lesson's walkthroughs assume.

The Sizes Sheet

Storage estimates die without size intuition. The bytes worth knowing cold:

thingsizenote
char / bool1–2 B
int / long / timestamp8 Beverything is 8 bytes eventually
UUID16 B binary — 36 B as a stringthe classic 2× schema tax
a tweet~280 Btext is tiny
a URL-shortener record~200 Bshort URL + long URL + metadata
a JSON API response1–10 KB
a web page, fully loaded~2 MB
a photo~200 KB–1 MBcall it ½ MB
one minute of HD video~50–100 MB≈ 5 GB/hour — video is a different universe

Now the reflex from last lesson, which converts these into capacity plans in one move: millions × KB = GB; billions × KB = TB; millions × MB = TB. Ten million users × a 1 KB profile = 10 GB — fits in RAM on one box. A billion tweets × 300 B = 300 GB — one beefy SSD. Ten million photos × ½ MB = 5 TB — now we're talking real storage. The instinct to build: text is almost free, metadata is cheap, images are real money, and video is its own department.

The sizes sheet on a log byte scale: int/timestamp 8 B, UUID 16 B binary to 36 B as a string, tweet ~280 B, JSON 1-10 KB, photo ~half MB, 1 min HD video 50-100 MB. Reflex: millions x KB = GB, size for the count.

What One Box Can Do

The most sanity-saving numbers on the sheet — because the most common estimation failure isn't bad arithmetic, it's not knowing what normal is. The 2026 anchors:

  • A commodity server: 32–64 cores, 128–512 GB RAM, a few NVMe TB, a 10–25 Gbps NIC. (Rentable by the hour. Not exotic.)
  • nginx serving static/proxying: ~10K–100K requests/s.
  • An application server doing real work: ~1K–10K requests/s.
  • PostgreSQL, simple indexed queries: ~5–10K QPS.
  • Redis: ~100K+ ops/s (a million with pipelining).
  • A Kafka broker: ~100K+ messages/s.

Hold these against last lesson's envelope: our photo app peaked at 10K QPS — which you can now place: a handful of app servers, one respectable Postgres (with the caching chapter carrying the reads), Redis barely awake. Most systems people nervously architect for fit on a shockingly small number of machines — and knowing that is the difference between designing calmly and cargo-culting a planet-scale architecture for 200 QPS. (What does change as QPS grows 100× is the closing lesson of this section.)

What Shrinks and What Never Will

Every numbers table ages — the 1990s version of this lesson had disk seeks at the center of the universe. So file each number by its trajectory, and your sheet stays useful for a decade:

Shrinking on a curve: CPU and cache speeds, RAM prices, flash everything (the classic 150 µs SSD read is already 20–50 µs on modern NVMe), NIC bandwidth (10 → 25 → 100 Gbps marches on). Rule: silicon numbers improve; re-check them every few years.

Frozen forever: the speed of light (5 ms per 1,000 km — cross-region RTTs have been flat for decades and always will be), and mechanical motion (a disk arm seeks today at nearly the same speed as in 1995 — which is why spinning disks retreated to sequential, archival work). Rule: geography and mechanics don't patch.

This split is quietly load-bearing for your whole career: architectures built on shrinking numbers get better for free (your SSD-based design speeds up every hardware refresh), while architectures that fight physics (chatty cross-region calls) are permanently, unfixably slow. When in doubt, design against the frozen numbers and let the shrinking ones surprise you pleasantly.

Traps That Sound Right

  • "I can look numbers up when I need them." Estimation is a conversation-speed skill — by the time the tab loads, the design review moved on. The dozen numbers are the vocabulary, not trivia.
  • "A UUID is 16 bytes." In binary, yes — as a string it's 36, and half the schemas in the world store it as a string. A 2× storage estimate error hiding in one column.
  • "10 Gbps network = 10 GB/s." ÷8. Bits for pipes, bytes for payloads (the guardrail from last lesson — it will never stop trying to bite you).
  • "Disks read at 200 MB/s, so my random-read workload is fine." Sequential 200 MB/s; random ~150 IOPS. The access pattern, not the device, decides which number you get.
  • "Redis does 100K ops/s, so my app will." Anchors are ceilings for that component, not your end-to-end number — your request also pays app work, hops, and the slowest stage wins (⟵ the knee, the tail, and everything the measurement lesson taught).
  • "The table said 150 µs, my drive does 30 — the table is wrong." Planning numbers are conservative on purpose. Estimate with the safe number; celebrate the faster hardware in production.

Key Takeaways & What's Next

  • The dozen latencies, on the human scale: RAM ~100 ns (minutes) · SSD ~150 µs (days) · DC hop ~500 µs (days) · disk seek ~10 ms (months) · cross-region ~150 ms (years). Carry the ratios: 1 : 1,500 : 100,000 : 1,500,000 — flash costs a thousand RAMs, another continent costs everything.
  • Throughput: disk ≈ gigabit link (~200 MB/s, one mental slot) · NVMe in GB/s · 10 Gbps = 1.25 GB/s · sequential ≫ random is bigger than any device choice.
  • Sizes: everything's 8 bytes until it's a string (UUID: 16 → 36!) · text tiny, photos ~½ MB, video ~5 GB/hr · millions × KB = GB.
  • One box does more than you fear: Postgres ~5–10K QPS, Redis ~100K ops/s, nginx ~10K–100K RPS — most designs fit on few machines, and knowing normal is the best defense against cargo-cult architecture.
  • File every number by trajectory: silicon shrinks, physics and mechanics never do — design against the frozen numbers.

You now hold the method (last lesson) and the numbers (this one). Next — Estimation Walkthroughs: QPS, Storage, Bandwidth — we put both to work on three complete, honest, narrated calculations, the exact kind an interview or a design review asks for.