Estimation drills
Quick numbers for system design: storage, requests per second, bandwidth, servers, cache and chat messages. Work each one out, type your estimate, then check the worked solution. Within 2x of the exact answer is spot on, within 10x is close enough.
- 1 day is 86,400 seconds. Round it to 10^5 in your head.
- Sizes are decimal: 1 KB is 1,000 bytes and 1 GB is 1,000 MB.
- Type plain numbers or use k, M, B and T: 1.5k, 20M, 3B.
- Answers are graded against the exact value, so rough maths still scores.
| L1 cache reference | 1 ns |
|---|---|
| Main memory reference | 100 ns |
| Read 1 MB from memory | 250 µs |
| Round trip in the same data centre | 500 µs |
| Read 1 MB from SSD | 1 ms |
| Disk seek | 10 ms |
| Read 1 MB from disk | 20 ms |
| Round trip between continents | 150 ms |
| 2^10, about a thousand | 1 KB |
|---|---|
| 2^20, about a million | 1 MB |
| 2^30, about a billion | 1 GB |
| 2^40, about a trillion | 1 TB |
| 2^50, about a quadrillion | 1 PB |
| A character (ASCII) | 1 byte |
| A 64-bit number or ID | 8 bytes |
| A short text post | ~1 KB |
| A photo | ~500 KB |
| Seconds in a day | 86,400 ≈ 10^5 |
|---|---|
| Seconds in a month | ≈ 2.5M |
| Seconds in a year | ≈ 30M |
| 1M requests a day | ≈ 12 req/s |
| 1B requests a day | ≈ 12k req/s |
| App server, simple requests | 1k to 10k req/s |
|---|---|
| SQL database, simple queries | 1k to 10k queries/s |
| Redis or Memcached node | 100k ops/s |
| Server memory | 64 to 512 GB |
| Network card | 1 to 10 Gbit/s |
| Peak over average traffic | 2x to 5x |