プログラマが知っておくべきレイテンシ数値
Latency Numbers Every Programmer Should Know
L1キャッシュ参照0.5nsから大陸間往復150msまで、各操作にかかる時間の桁感を覚えておくと、設計の概算見積もりが一瞬でできる。『メモリは速くディスクは遅い、同一DC内は速く大陸間は遅い』の桁を体に入れる。
なぜこの数字を覚えるのか
この表の目的は暗記自慢ではありません。設計の場で『どこが遅くなりそうか』を頭の中で一瞬で見積もるためです。
たとえば『1リクエストでDBに10回問い合わせる設計』と聞いた瞬間、『同一DC内の往復が500µs × 10 = 5ms、ネットワーク往復だけで5msか』と桁が見える。『この処理はディスクから読むのか、メモリから読むのか』で桁が100倍違うと知っていれば、設計の良し悪しが感覚で分かります。
大事なのは正確な値ではなく『桁(オーダー)』。『ナノ秒の世界か、マイクロ秒か、ミリ秒か』を体に入れることがゴールです。
レイテンシ数値の表
| 操作 | レイテンシ (ns) | 換算 | 備考 |
|---|---|---|---|
| L1 cache reference | 0.5 ns | 最速。CPUのすぐ隣 | |
| Branch mispredict | 5 ns | 分岐予測ミス | |
| L2 cache reference | 7 ns | L1の約14倍 | |
| Mutex lock/unlock | 25 ns | ロック操作 | |
| Main memory reference | 100 ns | L2の約20倍、L1の約200倍 | |
| Compress 1K bytes with Zippy | 10,000 ns | 10 µs | 圧縮 |
| Send 1 KB over 1 Gbps network | 10,000 ns | 10 µs | 1KB送信 |
| Read 4 KB randomly from SSD | 150,000 ns | 150 µs | ~1GB/sec SSD |
| Read 1 MB sequentially from memory | 250,000 ns | 250 µs | メモリから1MB連続 |
| Round trip within same datacenter | 500,000 ns | 500 µs | 同一DC内の往復 |
| Read 1 MB sequentially from SSD | 1,000,000 ns | 1 ms | メモリの約4倍 |
| HDD seek | 10,000,000 ns | 10 ms | 同一DC往復の約20倍 |
| Read 1 MB sequentially from 1 Gbps | 10,000,000 ns | 10 ms | メモリの約40倍、SSDの約10倍 |
| Read 1 MB sequentially from HDD | 30,000,000 ns | 30 ms | メモリの約120倍、SSDの約30倍 |
| Send packet CA→Netherlands→CA | 150,000,000 ns | 150 ms | 大陸間往復 |
単位の整理: 1 ns = 10⁻⁹ s、1 µs = 1,000 ns、1 ms = 1,000 µs = 1,000,000 ns。
スケール感をつかむ比喩(1nsを1秒に拡大)
L1キャッシュ参照(0.5ns)を『0.5秒』に引き伸ばすと、他はこうなります(相対比をそのまま秒に):
- メモリ参照(100ns) ≒ 1分40秒
- SSDランダム読み(150µs) ≒ 約3.5日
- 同一DC往復(500µs) ≒ 約12日
- HDDシーク(10ms) ≒ 約8ヶ月
- 大陸間往復(150ms) ≒ 約9.5年
こう並べると、『メモリで済む処理』と『大陸を跨ぐ処理』がいかに別世界かが体感できます。だから設計では『できるだけメモリ・同一DCで完結させ、遠い通信を減らす』が鉄則になるのです。
派生する便利な目安(連続読み出しのスループット)
| 媒体 | 連続読み出し速度 |
|---|---|
| HDD | 約 30 MB/s |
| 1 Gbps Ethernet | 約 100 MB/s |
| SSD | 約 1 GB/s |
| メインメモリ | 約 4 GB/s |
さらに往復回数の目安: 世界一周の往復は毎秒6〜7回しかできない/データセンター内の往復は毎秒2,000回できる。この差(約300倍)が、CDNやエッジ配置で『ユーザーの近くにサーバを置く』理由そのものです。
つまずきポイント
- メモリとディスクで桁が100倍違う。キャッシュ(メモリ)を1段挟むだけで劇的に速くなる理由はここ。『なぜキャッシュが効くのか』の定量的な裏付け。
- ネットワークの遅さは『距離=光速』が支配的。同一DC内(500µs)と大陸間(150ms)で300倍。アルゴリズムをいくら速くしても、地球の裏のサーバを叩けば物理法則で遅い。だから地理的にユーザーへ近づける(CDN)。
- 絶対値は古くなるが、桁の関係は普遍。SSDは年々速くなるが『メモリ < SSD < HDD』『同一DC < 大陸間』の順序と桁差は変わらない。覚えるべきは順序と桁。