封筒裏の計算の大切さ

性能やスケーラビリティが求められるシステムでは、どこにどれくらいの性能オーダーが必要なのかを検討するのは、アーキテクチャを検討する上でとても重要になる。封筒裏の計算の段階で大体のオーダーがわかれば、必要になるSWのアーキテクチャアルゴリズム、ハードがある程度はわかり、そのレベルで破綻していないことは事前に検証ができる。

それらの大体のオーダーについて、以下の3つのblogではまとめている。開発/インフラ運用の両方で、どこでどの程度の性能オーダーになっているのかを理解できていると、破綻のしない開発/運用が行えると思う。

ハードも年々進化していくわけで、どのようなアーキテクチャでどのようなオーダーで、どの部分が動作するのかについては、意識してウォッチしていきたいと思う今日この頃。

L1 cache reference 0.5 ns
Branch mispredict 5 ns
L2 cache reference 7 ns
Mutex lock/unlock 100 ns
Main memory reference 100 ns
Compress 1K bytes with Zippy 10,000 ns
Send 2K bytes over 1 Gbps network 20,000 ns
Read 1 MB sequentially from memory 250,000 ns
Round trip within same datacenter 500,000 ns
Disk seek 10,000,000 ns
Read 1 MB sequentially from network 10,000,000 ns
Read 1 MB sequentially from disk 30,000,000 ns
Send packet CA->Netherlands->CA 150,000,000 ns