Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Numbers everyone should know

Numbers everyone should know

a2-ito

May 17, 2022
Tweet

More Decks by a2-ito

Other Decks in Technology

Transcript

  1. Overview • Google 社の天才エンジニア Jeff Dean が発表した、すべ てのエンジニアが知っておくべき数字を紹介 • 元ネタ

    ◦ Designing distributed systems using NALSD flashcards ▪ May 2, 2020 ▪ https://cloud.google.com/blog/products/management-tool s/sre-principles-and-flashcards-to-design-nalsd
  2. NALSDさわり • NALSDは2フェーズから成る ◦ 1.原理的にうまく働く設計を考える ▪ 実現可能か? ▪ もっとうまいやり方はないか? ◦

    2.基本設計のスケールアップ ▪ 現実的か? ▪ 弾力性があるか? ▪ もっとうまいやり方がないか?
  3. 例2. • low-latency なメタデータ検索サービス • ボトルネックはメモリ、CPU ◦ メモリは、インデックス保持のために使われており、 CPUは実際の検索に使われる •

    ボトルネックを見つけ出すために、CPUキャッシュやメインメモリのアクセス速度 を参考とする ◦ ネットワークスループットはあまり気にしないだろう • システムをスケールしていくと、ボトルネックが変わり得る ⇒分散システムにおける全コンポーネントを推定できることが望ましい
  4. The numbers everyone should know • サーバや他のコンポーネントにおける共通のアクションを示す数値 • Jeff Dean

    の講義 (November 10, 2010) ◦ https://www.youtube.com/watch?v=modXC5IWTJI&t=3570s • オリジナルは、Peter Norvig の記事(と思う) ◦ http://norvig.com/21-days.html#answers
  5. The numbers everyone should know 1/4 CPU/キャッシュ • L1 cache

    reference 1 ns (0.5 ns) • Branch misprediction(CPU分岐予測のミス) 3 ns (5 ns) • L2 cache reference 4 ns (7 ns) • Mutex lock/unlock 17 ns (25 ns)
  6. The numbers everyone should know 2/4 RAM • Main memory

    reference 100 ns (100 ns) • Compress 1kB with Zippy 2,000 ns (3,000 ns) • Read 1 MB sequentially from memory 10,000 ns (250,000 ns)
  7. The numbers everyone should know 3/4 ディスク • SSD 4kB

    Random Read 0.02 ms • Read 1 MB sequentially from SSD 1 ms -> 1 GB/s • Read 1 MB sequentially from disk 5 ms -> 200 MB/s • Disk seek 10 ms (10 ms)
  8. The numbers everyone should know 4/4 ネットワーク • Send 2k

    bytes over 10 Gbps network 16,000 ns (20,000 ns※) • Round trip within same datacenter 0.5ms/500,000 ns (500,000 ns) ◦ 2000 round trips/s ◦ カリフォルニア・オランダ間の通信は約 300 倍の時間がかかる (150 ms)
  9. The numbers everyone should know サマリ • HDD ~200 MB

    per second • SSD ~1GB per second • main memory ~100GB per second • 10Gbps Ethernet ~1,000MB per second
  10. The lessons(参考) • Writes are 40 times more expensive than

    reads. • Global shared data is expensive. This is a fundamental limitation of distributed systems. The lock contention in shared heavily written objects kills performance as transactions become serialized and slow. • Architect for scaling writes. • Optimize for low write contention. • Optimize wide. Make writes as parallel as you can. http://highscalability.com/numbers-everyone-should-know Feb, 2009
  11. What is the overall latency of retrieving 30 256kB images

    from one server? • 画像読み込み回数 15回 ◦ 30 images / 2 disks per machine = 15
  12. What is the overall latency of retrieving 30 256kB images

    from one server? • 画像読み込み回数 15回 ◦ 30 images / 2 disks per machine = 15 • HDDから画像1枚を読み込む時間 11.28 ms ◦ (256KB / 1MB) * 5 ms + 10 ms seek = 11.28 ms
  13. What is the overall latency of retrieving 30 256kB images

    from one server? • 画像読み込み回数 15回 ◦ 30 images / 2 disks per machine = 15 • HDDから画像1枚を読み込む時間 11.28 ms ◦ (256KB / 1MB) * 5 ms + 10 ms seek = 11.28 ms • トータル時間 169.2 ms ◦ 15 reads * 11.28 ms = 169.2 ms
  14. What is the overall latency of retrieving 30 256kB images

    from one server? • 画像読み込み回数 15回 ◦ 30 images / 2 disks per machine = 15 • HDDから画像1枚を読み込む時間 11.28 ms ◦ (256KB / 1MB) * 5 ms + 10 ms seek = 11.28 ms • トータル時間 169.2 ms ◦ 15 reads * 11.28 ms = 169.2 ms 1000 ms / 169.2 ms ≒ 5 => 1秒あたり 5 つの画像を取得できる