L = λ × W
クapasity Planningの最も便利な方程式
どの安定したキューにも、内部構造に関係なく適用可能です:L = λ × W,ここで
- L = システム内(進行中または待機中)の平均のアイテム数
- λ(lambda)= 平均到着率(単位時間あたりのアイテム数)
- W = システム内で各アイテムが平均滞在時間
幾何学的読み取り: λとWをそれぞれ軸にプロットします。Lはこれらが形成する四角形の面積です。Capacity Planningはこの四角形の中で行われます。
なぜ重要か: 三つの量のどれかを測定すれば、他の二つもわかります。通過率とラテンスを測定すれば、占有率がわかります。通過率と占有率を測定すれば、ラテンスがわかります。この法則は、ウェブリクエスト、レストランのテーブル、スーパーマーケットのキュー、CPUパイプラインにも適用されます。
具体的な例:
- ウェブサービスは、平均ラテンスが50ms(0.05秒)の200req/sを処理しています。L = 200 × 0.05 = 10が進行中です。
- コーヒーショップは、平均滞在時間が15分(0.25時間)の60人/hを処理しています。L = 60 × 0.25 = 15人が内にいます。
- バックエンドプールは、平均ラテンスが200ms(0.2秒)の1,500req/sを処理しています。L = 1,500 × 0.2 = 300が進行中です。
サイズのイマイチ: ワーカー数、スレッド数、接続数は、少なくともLでなければなりません。それ以下はキューの拡大を意味します。
ラテンスが80%利用率を超えるとなぜ急上昇するか
オペレーションの最も重要な曲線
x軸に利用率のプロットを表示し(0%から100%)および平均待機時間をy軸に。形状は、容量計画で最も重要な曲線の1つです。
M/M/1キューイングモデル:ポワソン到着(ランダム)および指数関数的なサービス時間(ランダム)を持つシステムの平均待機時間は:
W_q = ρ / (μ × (1 - ρ))
ここで、ρは利用率(0から1)であり、μはサービスレートです。
曲線の形状:
- ρ = 0.5(50%利用)の場合、待機時間は小さい(1サービス時間)。
- ρ = 0.7(70%利用)の場合、待機時間は約2.3サービス時間です。
- ρ = 0.8(80%利用)の場合、待機時間は約4サービス時間です。
- ρ = 0.9(90%利用)の場合、待機時間は約9サービス時間です。
- ρ = 0.95(95%利用)の場合、待機時間は約19サービス時間です。
- ρ = 1.0(100%利用)の場合、待機時間は無限です。
ひざ掛け:約80%の利用率で曲線が急に曲がります。ひざ掛けの下では、容量は快適です。上のひざ掛けでは、待機時間は利用率よりも急上昇します。
実践的な読み方:70%の利用率で安定状態を目指しましょう。100%を目指さないこと。30%の「余裕」は無駄ではありません。有限の待機時間の代償です。
サイズ調整の過程でひざ掛けを越える
2つのシナリオ:
シナリオA:10のレプリカが60%のCPUを使用中。p99の待機時間は100msです。
シナリオB:同じfleetが90%のCPUを使用して、交通量の増加によりp99 = 600msです。
同じfleet、同じコードだけが変わり、利用率だけが変わっています。
サイズとトリガーを一緒に
合成
今から Little's Law を適用して、四角形として読み、キーの曲線を読み、両方を容量決定に繋げることができます。
両方適用してください。
バックエンド階層は、1秒間に2,000個の要求を処理し、70%のCPU使用率の下、レプリカあたり50ミリ秒の平均レイテンシ、80個の要求を処理します。増加係数2xで、3つの同時レプリカの失敗を乗り越えることを望む。
伴侶ノート
伴侶ノート
この幾何学のレッスンは、Stateless Horizontal Scalingのメインレッスンを量的な幾何学として再構成します。
次の伴侶である geometry_of_ingress_egress_separation は、ネットワーク境界のスプリットを二部グラフとして再構成し、スプリットが除去する切断頂点を持つことを示します。
おおっとくしました。