← 研修トップ
性能分析の土台
その数字は、何を測ったことになっているのか。平均は実在の1回を指さず、使用率は占有率でしかなく、測ること自体に費用がかかります。観測器が現象より粗ければ、起きていることが「無い」ように見える。道具の使い方ではなく、出てきた数字をどう疑うかを、一次ソースと実測から積み上げます。
- 1約 9 分速いとは何か — 3つ目の量レイテンシとスループットの2つだけでは、性能の状態を言い当てられません。スループットが同じでレイテンシが7倍違う状態が、実際に作れます。
- 2約 9 分平均は、誰のことも指していない平均は計算で作られた値なので、実在の1回と一致する保証がありません。パーセンタイルは並べて何本目かを取る値なので、必ず実在の1回を指します。
- 3約 9 分測ることが、対象を変える観測にはかならず費用がかかります。その費用が測りたい現象より大きいと、出てきた数字はもう元の処理の性質ではありません。
- 4約 9 分余力は、待ち時間の購入代金1件あたりの仕事を増やさなくても、到着を増やすだけで応答時間は伸びます。増えたぶんは全部が「待ち」です。
- 5約 9 分写っていないことは、起きていない証拠ではないサンプリング型のプロファイラは一定の間隔で覗くだけなので、間隔より短い事象は確率でしか写りません。名前が出ない関数は、速いのではなく、覗いた瞬間に走っていなかっただけかもしれません。
- 6約 9 分ボトルネックは、1つずつしか見つからない直列につながった経路では、全体の時間は各段の足し算です。だから効くのは最大の項だけで、小さい項をどれだけ削っても全体はほとんど動きません。
- 7約 9 分使用率は、占有率でしかない使用率が答えているのは「その期間のうち、何割の時間ふさがっていたか」だけで、「あとどれだけ入るか」は答えていません。
- 8約 9 分時間はどこで消えたのか — 段ごとに測る所要時間は段ごとに分けないと「どこで消えたか」が分かりません。ただし段ごとの数字を出す道具は、区間ではなく開始からの累積を返すことがあります。
- 9約 9 分実行計画は、見積もりである実行計画に並ぶ数字は統計情報からの推定であって、実測ではありません。PostgreSQL 公式は、推定が的中した例の直後に but that's quite unusual in practice と書いています。
- 10約 9 分壊れる前に、何を測っておくか事故のあとに見えるのは、事故の前に残すと決めた数字だけです。Prometheus 公式は summary について you cannot "recalculate" the quantiles later と書きます。