# ベンチマーキング ## 定義 ベンチマーキング(benchmarking)は、本番環境で問題が起きる前に選択肢を比較したり、退行を見つけたり、パフォーマンスの限界(利用可能なシステムリソース量・仮想化環境のソフトウェア制限・ターゲットアプリケーションの限界)を理解したりするために、制御された形でパフォーマンスをテストすることである。ベンチマークツールはシステムがどれだけ高速に実行できるかという数値を返すだけであり、その結果を理解し自分の環境にどう活かすかを決めるのは実施者の責任である。テストするワークロードに基づき、人工的なマイクロベンチマーキングから、シミュレーション、リプレイ、もっとも現実的な本番ワークロードまでの範囲(スペクトル)に分類される。ベンチマーキングの実行方法自体にもメソドロジがあり、ベンチマーク実行後にしか結果を見ないパッシブベンチマーキング(fire-and-forget、アンチメソドロジ)と、実行中に可観測性ツールで分析するアクティブベンチマーキング(観察による分析)が対比される。後者はテストが実際に何をテストしているかを確認し、システムまたはベンチマーク自体の本当の制約要因を明らかにできる。(Source: [[@2023__OReillyJapan__詳解 システム・パフォーマンス 第2版 - Chapter 12 ベンチマーキング]] §12.1, §12.3.1, §12.3.2) ベンチマーキングにはミス・間違い・不正など16種類のまずいパターン(場当たり的なベンチマーキング、根拠のない信頼、分析抜きの数値、複雑なベンチマークツール、テスト対象の誤り、環境の無視、誤りの無視、ばらつきの無視、摂動の無視、複数の要素の変更、ベンチマークの逆説、競合他社製品のベンチマーキング、味方討ち、誤解を招くベンチマーク、ベンチマークスペシャル、詐欺)があり、正しく実行しようとすると驚くほど難しい。特に「場当たり的なベンチマーキング」(A を計測したつもりが実際は B を計測し C と結論づける)がもっとも根源的な失敗であり、実際に何を計測しているかを厳格にチェックし正当な結論を導く姿勢が対策として求められる。ベンチマークの結果を評価するための実務的な問いのリストとして、「なぜ倍ではないのか」「テストは限界を超えていないか」「テストはエラーになっていないか」「テストは再現されるか」「意味のあるテストか」「本当にテストしたのか」の6項目からなるベンチマーキングのチェックリストと、ベンダー結果を評価するための一般/CPU・メモリ/ストレージ/ネットワークの4カテゴリからなる「ベンチマークについて問うべきこと」のより詳細な問いのリストが提供されている。(Source: [[@2023__OReillyJapan__詳解 システム・パフォーマンス 第2版 - Chapter 12 ベンチマーキング]] §12.1.3, §12.3.10, §12.4) ## 横断的知見 (このセクションは複数ソースの突き合わせで得られる知見を蓄積する。現時点では本概念に触れたソースが1件のため、蓄積を今後の ingest に委ねる。) ## 未解決の問い - パッシブベンチマーキングとアクティブベンチマーキングの区別は「実行中に観測するか否か」だが、CI/CD 上で自動実行される非回帰テスト(継続的ベンチマーキング)のように人間が実行中に張り付けない運用では、アクティブベンチマーキングの利点(制約要因の即時特定)をどう機械的に代替できるか。 - 「ベンチマークの逆説」(複数ベンチマークすべてに勝つ確率が指数的に下がる)は、ベンチマークの数を絞ることで営業上の勝率を上げられることを含意するが、それはベンチマークの網羅性(意味のあるテストか)とトレードオフになる。この2つの要求をどう両立させるべきか、本章は明示的な指針を与えていない。 - ベンチマークスペシャル(TPC-Aの反ベンチマークスペシャル条項)のような業界標準の自浄機構は、業界標準を持たない新興ワークロード(例: LLM推論ベンチマーク)にどこまで移植可能か。 ## 関連 - [[@2023__OReillyJapan__詳解 システム・パフォーマンス 第2版 - Chapter 12 ベンチマーキング]] — 本概念の原典解説(§12.1〜§12.4)。 - [[USE メソッド]] — アクティブベンチマーキングやCPUプロファイリングと組み合わせてベンチマークの制約要因(限界)を見つけるために使われる(§12.3.4)。 - [[ワークロードの特性の把握]] — ベンチマークと本番ワークロードの関連性を検証するために使われる(§12.3.5)。 - [[パフォーマンスのアンチメソドロジ]] — パッシブベンチマーキングと同様、体系的な分析を欠くアンチメソドロジという位置づけを共有する姉妹概念。 - [[フレームグラフ]] — CPUプロファイリングによるベンチマーク分析(bonnie++・ZFS I/Oスロットリングのケーススタディ)で使用。 - [[Brendan Gregg]] — アクティブベンチマーキング・ベンチマーキングチェックリストの提唱者。 ## 出典 - [[@2023__OReillyJapan__詳解 システム・パフォーマンス 第2版 - Chapter 12 ベンチマーキング]] §12.1〜§12.4