封筒計算の後ろ


イントロ


私はこのトピックはむしろ誤解を招くと常に複雑です.私は以下のバージョンを反対することはできませんが、より現実的な計算よりも簡素化され、それはまだあなたのインタビュープロセスで遭遇することができるものの99 %をカバーしている.

何を見積もるか


秒あたりのクエリ
rps - 1秒間に読み込む
wps - 1秒間に書き込む
ピークqps = qps * 2 (通常)
RW - read - write比
メッセージサイズ-指定しなかった場合のメッセージのサイズ
読み込みスループット- RPS *メッセージサイズ= nバイト/秒
書き込みスループット- WPS *メッセージサイズ= nバイト/秒
💡 スループットは実際にどれだけのデータが通過され、帯域幅がどれだけのデータを通過できるか(ネットワーク構成)
1 Gbpsのネットワーク帯域幅は125 MB/s
ストレージ-通常N年間のストレージ
レプリカストレージ-ストレージ
キャッシュストレージ-通常ストレージの
キャッシュレプリカストレージ-キャッシュストレージ

基本番号


24秒60 * 60 = 86400、約10 ^ 5
1のASCIレター
タイムスタンプ- 8バイト( 2 ^ 64 )
- 103 KB
106から1 MB
109グラム
1012 - 1 TB
1015 - 1 pb
1018 - 1 eb

二人の力


Power           Exact Value         Approx Value        Bytes
---------------------------------------------------------------
7                             128
8                             256
10                           1024   1 thousand           1 KB
16                         65,536                       64 KB
20                      1,048,576   1 million            1 MB
30                  1,073,741,824   1 billion            1 GB
32                  4,294,967,296                        4 GB
40              1,099,511,627,776   1 trillion           1 TB

プログラマが知っておくべき待ち時間


Latency Comparison Numbers
--------------------------
L1 cache reference                           0.5 ns
Branch mispredict                            5   ns
L2 cache reference                           7   ns                      14x L1 cache
Mutex lock/unlock                           25   ns
Main memory reference                      100   ns                      20x L2 cache, 200x L1 cache
Compress 1K bytes with Zippy            10,000   ns       10 us
Send 1 KB bytes over 1 Gbps network     10,000   ns       10 us
Read 4 KB randomly from SSD*           150,000   ns      150 us          ~1GB/sec SSD
Read 1 MB sequentially from memory     250,000   ns      250 us
Round trip within same datacenter      500,000   ns      500 us
Read 1 MB sequentially from SSD*     1,000,000   ns    1,000 us    1 ms  ~1GB/sec SSD, 4X memory
HDD seek                            10,000,000   ns   10,000 us   10 ms  20x datacenter roundtrip
Read 1 MB sequentially from 1 Gbps  10,000,000   ns   10,000 us   10 ms  40x memory, 10X SSD
Read 1 MB sequentially from HDD     30,000,000   ns   30,000 us   30 ms 120x memory, 30X SSD
Send packet CA->Netherlands->CA    150,000,000   ns  150,000 us  150 ms

Notes
-----
1 ns = 10<sup>-9</sup> seconds
1 us = 10<sup>-6</sup> seconds = 1,000 ns
1 ms = 10<sup>-3</sup> seconds = 1,000 us = 1,000,000 ns

レイテンシ番号に基づく便利なメトリクス


Read sequentially from HDD at 30 MB/s
Read sequentially from 1 Gbps Ethernet at 100 MB/s
Read sequentially from SSD at 1 GB/s
Read sequentially from main memory at 4 GB/s
6-7 world-wide round trips per second
2,000 round trips per second within a data center

見積もり?

  • 日のユーザー数と総ユーザー数を明確にします.
  • ユーザーからのリクエスト数を平均的に尋ねる.ここからQPSを得ることができます.
  • はピークQPS、読み取り、書き込みを考える.
  • はメッセージサイズを仮定します.
  • スループットを計算します.
  • 平均データサイズを考えることができれば.ここでストレージとキャッシュを計算します.
  • 推定例


    あなたは毎日10万人のアクティブなユーザーを持っており、それぞれの平均と新しいデータは、1日あたり5回作成される1日あたり100読み込み要求を行います.
    RPS = 10 m * 100/86400 = 12000 r/s
    WPS = 10 M * 5/86400 = 580 W/s
    ピークQPS = 24000
    平均読取りメッセージサイズが50バイトで書かれたメッセージが1 KBであると仮定してみましょう.
    AVGリードスループット50 * 12 * 10 ^ 3 = 60 kb/s
    AVG書き込みスループット1 KB * 580 = 580 KB/s
    ここでは、データ/メタデータなどの種類について考えることができます.
    5年保管-10 M * 1 KB * 1日あたりの5時間*年365日* 5年= 91 TB * 3 = 300 TB.
    あなたはホットデータのわずか10 %を持っていると仮定し、キャッシュとして20 %を使用することに合意した.
    キャッシュストレージ- 10 % * 90 TB * 20 % * 3レプリカ= = 5.5 TB