SDN
← 概念一覧へ
基礎概念

プログラマが知っておくべきレイテンシ数値

Latency Numbers Every Programmer Should Know

L1キャッシュ参照0.5nsから大陸間往復150msまで、各操作にかかる時間の桁感を覚えておくと、設計の概算見積もりが一瞬でできる。『メモリは速くディスクは遅い、同一DC内は速く大陸間は遅い』の桁を体に入れる。

レイテンシの桁感(対数スケール)

横軸はナノ秒(ns)の対数軸。L1 キャッシュ(0.5ns)と大陸間往復(150ms)では約 3 億倍の差があります。

CPUメモリストレージネットワーク
キーポイント
  • 速い順の桁感: L1(0.5ns) < メモリ参照(100ns) < SSDランダム読み(150µs) < 同一DC往復(500µs) < HDDシーク(10ms) < 大陸間往復(150ms)。
  • メモリから1MB連続読み=250µs、SSDから1MB=1ms(メモリの4倍)、HDDから1MB=30ms(メモリの120倍)。
  • 同一データセンター内の往復は500µs。これが『ネットワーク越し』の基準コスト。
  • 大陸間(米→蘭→米)の往復は150ms。地理的距離=光速の限界が効くので桁が跳ね上がる。
  • 覚える効用: ボトルネックの当たりが付く。『これはディスクI/Oが効く』『これはネットワーク往復が支配的』が即判断できる。
トレードオフ

これらは『桁の目安』であって正確な実測値ではない。ハードウェアの進化で絶対値は変わる(SSDは年々速くなる)が、『メモリ≪SSD≪ディスク』『同一DC≪大陸間』という相対的な桁の関係は長く変わらない。正確さより桁感を重視するのが、概算見積もりという道具の正しい使い方。

なぜこの数字を覚えるのか

この表の目的は暗記自慢ではありません。設計の場で『どこが遅くなりそうか』を頭の中で一瞬で見積もるためです。

たとえば『1リクエストでDBに10回問い合わせる設計』と聞いた瞬間、『同一DC内の往復が500µs × 10 = 5ms、ネットワーク往復だけで5msか』と桁が見える。『この処理はディスクから読むのか、メモリから読むのか』で桁が100倍違うと知っていれば、設計の良し悪しが感覚で分かります。

大事なのは正確な値ではなく『桁(オーダー)』。『ナノ秒の世界か、マイクロ秒か、ミリ秒か』を体に入れることがゴールです。

レイテンシ数値の表

操作レイテンシ (ns)換算備考
L1 cache reference0.5 ns最速。CPUのすぐ隣
Branch mispredict5 ns分岐予測ミス
L2 cache reference7 nsL1の約14倍
Mutex lock/unlock25 nsロック操作
Main memory reference100 nsL2の約20倍、L1の約200倍
Compress 1K bytes with Zippy10,000 ns10 µs圧縮
Send 1 KB over 1 Gbps network10,000 ns10 µs1KB送信
Read 4 KB randomly from SSD150,000 ns150 µs~1GB/sec SSD
Read 1 MB sequentially from memory250,000 ns250 µsメモリから1MB連続
Round trip within same datacenter500,000 ns500 µs同一DC内の往復
Read 1 MB sequentially from SSD1,000,000 ns1 msメモリの約4倍
HDD seek10,000,000 ns10 ms同一DC往復の約20倍
Read 1 MB sequentially from 1 Gbps10,000,000 ns10 msメモリの約40倍、SSDの約10倍
Read 1 MB sequentially from HDD30,000,000 ns30 msメモリの約120倍、SSDの約30倍
Send packet CA→Netherlands→CA150,000,000 ns150 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 < 大陸間』の順序と桁差は変わらない。覚えるべきは順序と桁。

関連する概念

この概念で腕試し

関連する 3 問のクイズに挑戦できます。

クイズを解く