法則一覧

コラム8 本を順に読む

速くしたいとき

何かが遅いとき、まず手をつけたくなるのは自分の知っている部分だ。このコラムは、時間が実際にどこで使われているかを見つけるところから、速くできる限界、待ち時間が伸びる理由、そして速さを保ち続ける手までを順に読む。

  1. 測ると遅い工程がいくつも見つかる。仕事がそれらを順に通るなら、どれだけ流れるかを決めるのはそのうち一つだ。

    制約理論

    第61条 · 性能システムの処理量は、最も詰まっている一か所で決まる。心得:改善はボトルネックに集める。ほかはそれを待っているだけだ
  2. アムダールが数えるのは、仕事をしている時間だ。混んでいるシステムでは、仕事が始まるまで待つ時間のほうが大きくなりうる。

    リトルの法則

    第37条 · 性能安定した系では、系の中にある件数の平均は、到着率と平均滞在時間の積に等しい。心得:早く終わらせたければ、始める数を減らす
  3. 多くのサーバに触れるリクエストは、どこかのサーバの列や停止に出会いやすい。利用者は、いちばん遅いものを待つ。

    スケールの裾野

    第52条 · 分散システム一つのリクエストが多数のサーバに分かれると、最も遅いサーバが応答時間を決める。心得:ファンアウトでは、平均でなく遅い裾を見る
  4. 裾への定番の手であるヘッジや再試行は、仕事を増やす。物事がうまくいかないときにちょうど増える仕事は、それ自体が遅さの原因になる。

    一定の作業量

    第80条 · 分散システム変更や障害の数に応じて仕事が増えるシステムは、余力がいちばん少ないときにいちばん多くの仕事をする。心得:制御系では、変化の有無に関係なく同じ量の仕事をさせる
XBlueskyはてブLinkedIn