Slide 1

Slide 1 text

Numbers everyone should know 2021.9.17@a2ito

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

背景 ● 分散システムをどう設計するか? ○ オーガニックに育てる ○ PoCしてみる ● Google では NALSD というメソッドを使う

Slide 4

Slide 4 text

NALSD ● Non-Abstract Large System Design ○ 非抽象的な大規模システム設計 ○ 具体性をもって正しくシステムを設計しなければ、現実世界に対応できないシステムが出来上 がる ● 詳細は、SREワークブック参照

Slide 5

Slide 5 text

NALSDさわり ● NALSDは2フェーズから成る ○ 1.原理的にうまく働く設計を考える ■ 実現可能か? ■ もっとうまいやり方はないか? ○ 2.基本設計のスケールアップ ■ 現実的か? ■ 弾力性があるか? ■ もっとうまいやり方がないか?

Slide 6

Slide 6 text

例1. ● 画像を保存するサーバを設計 ● どの程度の書き込み処理速度を達成できるか? ○ ストレージレイヤには制限があるかもしれない ○ disk seek や write throughput を知ることはボトルネックの特定に非常に有用

Slide 7

Slide 7 text

例2. ● low-latency なメタデータ検索サービス ● ボトルネックはメモリ、CPU ○ メモリは、インデックス保持のために使われており、 CPUは実際の検索に使われる ● ボトルネックを見つけ出すために、CPUキャッシュやメインメモリのアクセス速度 を参考とする ○ ネットワークスループットはあまり気にしないだろう ● システムをスケールしていくと、ボトルネックが変わり得る ⇒分散システムにおける全コンポーネントを推定できることが望ましい

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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)

Slide 10

Slide 10 text

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)

Slide 11

Slide 11 text

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)

Slide 12

Slide 12 text

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)

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

What is the overall latency of retrieving 30 256kB images from one server?

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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 つの画像を取得できる

Slide 20

Slide 20 text

Flashcards for SRE ● https://danrl.com/sre-flash-cards/SRE%20Flash%20Cards.pdf ● Enjoy!

Slide 21

Slide 21 text

おさらい

Slide 22

Slide 22 text

Speed Read sequentially from disk

Slide 23

Slide 23 text

200 MB/s

Slide 24

Slide 24 text

Speed Read sequentially from memory

Slide 25

Slide 25 text

100 GB/s

Slide 26

Slide 26 text

Speed Round trips within same data center per second?

Slide 27

Slide 27 text

2000 rt/s