GH GambleHub

ベンチマークとパフォーマンスの比較

概要

ベンチマークは実験であり、5分間のラン・ラックではありません。"主な原則:

1.仮説と指標を定式化する。

2.制御変数(ハードウェア、コア、電源、バックグラウンドノイズ)。

3.十分なデータ(レプリカ、信頼区間)を収集します。

4.プロファイリングを行う-それがなければ、あなたは「理由」を理解することはできません。

5.repro:スクリプト、バージョンとアーティファクトを修正します。

ベンチマーク目標とビジネス指標

スループット: RPS/QPS/CPS、書き込み/秒

レイテンシー:p50/p95/p99/尾の密度。
効率:Cost-per-1k RPS、トランザクションあたりのワット、$/ミリ秒の改善。
安定性:ジッタ、サイクル間/ノードの可変性。
弾力性:N ×リソースでの指標のスケーリング方法(Amdahl/Gustafsonベンチマーク)。

方法論: 実験的な設計

仮説: 「Envoy with HTTP/3は同じRPSでp95 TTFBを10-15%削減する」

比較の単位:ironのbuild/config/instanceバージョン。
A/Bダイアグラム:同一の環境で並列実行。またはABAB/Latin Squareは漂流の影響を減らすために。
繰り返しの数:安定した評価のための構成ごとの10の短い+3つのロングランを≥して下さい。
統計:中央値、MAD、ブートストラップ信頼区間;non-parametric tests (Mann-Whitney) for 「tailed」 distributions。
DoE(最小):一度に1つの変数(OVAT)または2-3因子の因子の因子因子を変更します(例えば、TLSプロファイル× HTTPバージョン×カーネル)。

可変および騒音制御

CPUガバナー:'パフォーマンス';「節電」を無効にします。
ターボ/スロットリング:モニタリング周波数、温度、スロットリング(そうでなければウォームアップは偽の賞金を与えます)。
NUMA/ハイパースレッディング: ピンIRQとプロセス('taskset/numactl')、メモリの局所性を測定します。
C 状態/IRQバランス:設定を修正します。ネットワークテスト-特定のコアのIRQピン。
バックグラウンドプロセス:クリーンノード、cron/backup/antivirus/updatedbをオフにします。
ネットワーク:安定した道、固定MTU/ECN/AQMのチャネルのフラッタ無し。
データ:同じセット、カーディナリティ、ディストリビューション。
キャッシュ:「cold」(最初のパス)と「warm」(繰り返し)モードを分離し、明示的にマークします。

ベンチマーククラス

1)マイクロベンチマーク(機能/アルゴリズム)

目的:特定のコード/アルゴリズムを測定します。
ツール:組み込みのベンチフレームワーク(Go 'testing。B'、JMH、 pytest-benchmark)。
ルール:JITウォームアップ、ミリ秒→ナノ秒;GCの分離;種子を固定しました。

2) Mesoベンチマーク(コンポーネント/サービス)

1つのノード上のHTTPサーバ、キャッシュ、ブローカー、データベース。
ツール:wrk/wrk2、 k6(オープンモデル)、ベジータ、ghz (gRPC)、フィオ、sysbench、 iperf3。
ルール:接続/ファイル制限、プール;CPU/IRQ/GCレポート。

3)マクロベンチマーク(e2e/リクエストパス)

完全な方法:CDN/edge→proxy→service→DB/cache→answer。
ツール:k6/Locust/Gatling+RUM/OTelトレース;現実的なルートが混在しています。
ルール:現実に近い(「汚い」データ、外部システムのラグ)、きちんとレトラと。

レイヤー別メトリック

[画層]メトリクス
お客様/エッジDNS p95、 TLSハンドシェイクp95、 TTFB、 HTTP/2/3
ネットワークRTT/loss/jitter、 ECNのセリウム、Goodput、 PPS/CPS
TLS/プロキシハンドシェイク/s、再開率、暗号ミックス
付録(付録)p50/95/99、 5xx/429、 GCの一時停止、スレッド、キュー
キャッシュ(Cache)層別ヒット率、立ち退き、ホットキー
DB(データベース)QPS、 p95リクエスト、ロック、バッファ/キャッシュヒット、WAL/fsync
ディスク(Disk)IOPS、レイテンシ、4k/64k、読み取り/書き込みミックス、fsyncコスト
GPU/MLスループット(サンプル/秒)、レイテンシ、mem BW、 CUDA/ROCm util

テストテンプレートとコマンド

ネットワーク(TCP/UDP):
bash iperf3 -s # server iperf3 -c <host> -P 8 -t 60 # parallel, stable bandwidth
HTTPサーバ(安定したロード、wrk2):
bash wrk2 -t8 -c512 -d5m -R 20000 https://api. example. com/endpoint \
--latency --timeout 2s
オープンモデル(k6、到着率):
javascript export const options = {
scenarios: { open: { executor: 'constant-arrival-rate', rate: 1000, timeUnit: '1s',
duration: '10m', preAllocatedVUs: 2000 } },
thresholds: { http_req_failed: ['rate<0. 3%'], http_req_duration: ['p(95)<250'] }
};
ディスク(フィオ、4kランダム読み取り):
bash fio --name=randread --rw=randread --bs=4k --iodepth=64 --numjobs=4 \
--size=4G --runtime=120 --group_reporting --filename=/data/testfile
データベース(sysbench+PostgreSQLサンプルアイデア):
bash sysbench oltp_read_write --table-size=1000000 --threads=64 \
--pgsql-host=... --pgsql-user=... --pgsql-password=... prepare sysbench oltp_read_write --time=600 --threads=64 run
メモリ/CPU (Linux perf+stress-ng):
bash perf stat -e cycles,instructions,cache-misses,L1-dcache-load-misses \
-- <your_binary> --bench

統計と有効性

Replicates:最小10回の実行、外れ値を除外(堅牢:中央値/MAD)。
信頼区間:p95/p99および手段のブートストラップ95% CI。
エフェクトサイズ:相対的な変化とそのCI(例− 12% [− 9%; − 15%])。
実用的な意義:+30% CPUの価格でp95の10%の減少-それは価値がありますか?
グラフ:ディストリビューション用のヴァイオリン/ECDF、「彩度曲線」(RPS→レイテンシー)。

ボトルネックプロファイリングとローカリゼーション

CPU: 'perf'、 'async-profiler'、 eBPF/pyroscope;前後のフラメグラフ。
Alloc/GC:ランタイムプロファイル(Go pprof/Java JFR)。
I/O: 'iostat'、 'blktrace'、 'fio --lat_percentiles=1'。
Сеть: 'ss -s'、' ettool -S'、'dropwatch'、'tc -s qdisc'。
「EXPLAIN (ANALYZE、 BUFFERS)」、 pg_stat_statements、 slowlog。
現金:トップキー、TTL、立ち退きの原因。

レポートとアーティファクト

修正するもの:
  • git SHAビルド、コンパイル/最適化フラグ。
  • カーネル/ネットワークコンフィギュレーション(sysctl)、 ドライババージョン/NIC/ファームウェア。
  • トポロジー(vCPU/NUMA/HT)、ガバナー、温度/周波数。
  • データ:サイズ、カーディナリティ、分布。
  • 公開するもの:p50/p95/p99テーブル、エラー/秒、スループット、リソース(CPU/RAM/IO)、 CI。
  • アーティファクト:スクリプト、グラフ、フラメグラフ、生のJSON/CSV結果、環境プロトコルを実行します。

公正なベンチマーク

同一のリミッター(コンプール、キープアライブ、チェーンTLS、 OCSPステープル)。
ネゴシエートされたタイムアウト/リトレイとHTTPバージョン(h2/h3)。
温度バランス:平衡までウォーミング(ターボブースト効果なし)。
フェアキャッシュ:「寒い」または「暖かい」のいずれか。
ネットワーク対称性:同じルート/MTU/ECN/AQM。
時間予算:DNS/TLS/connect-明示的にカウントするか、等しく除外します。

アンチパターン

1回の実行→「output」。
1つのシリーズのモード(部分の冷たい、部分の暖かい)の混合。
Internet load→falseの「安定性」のためのオープンなモデルの代わりに閉じたモデル。
カウントされていないリトレイ→「RPSが成長」テイクとカスケードのコストで5xx。
異なった腺/中心/力の回路の比較。
プロファイリング→ブラインド最適化なし。
プロファイル解析→テール回帰なしでGC/ヒープで遊ぶ。

実用的なレシピ

最低のベンチのパイプラインのステップ:

1.環境を修正しました(スクリプト'env_capture。sh')。

2.ウォームアップ(5〜10分)、記録周波数/温度。

3.ショート+1ロングランのN反復を行います。

4.プロファイル(CPU/alloc/IO)をピーク時に削除します。

5.CI/グラフを計算し、アーティファクトを収集します。

6.解決策:仮説を受け入れ/拒否し、次のステップを形成します。

容量のカーブ:
  • RPSステップ(ステップの10%)→p95/エラーを修正→「膝」を見つけます。
  • RPS→レイテンシとRPS→CPUのスケジュールを構築します。境界線とさらに%のコストが表示されます。

iGaming/fintech固有の

1ミリ秒あたりのコスト:$effect (変換/解凍/PSP制限)によるランクの向上。
ピーク(試合/トーナメント):TLS/CDN/キャッシュがウォームアップされたspike+plateauベンチマーク。
支払い/PSP:サンドボックス制限、idempotency、劣化に対する反応でエンドツーエンドを測定します。fixプロキシメトリックを使用したTime-to-Wallet。
不正防止/ボットフィルタ:マクロベンチ(偽陽性レート、レイテンシ添加)にルールプロファイルを含める。
リーダー/ジャックポット:ホットキー/ランキング、ロック、原子性をテストします。

ベンチマークチェックリスト

  • 仮説/指標/成功基準。
  • 可変監視(power/NUMA/IRQ/network/cache)。
  • プランの実行(レプリカ、期間、ウォームアップ)
  • 冷たい/暖かい分離。
  • プロファイリングが有効(CPU/alloc/IO/DB)。
  • 統計:CI、意義テスト、グラフ。
  • リポジトリ内のアーティファクトとリプロスクリプト(ベンチのIaC)。
  • 「改善コスト」と推奨事項を報告する。
  • 回帰perf。

ミニレポート(テンプレート)

目標は、CPUの成長なしでp95 APIを15%削減することです>10%。
方法:A/B、 k6オープンモデル1k rps、 10 × 3実行、ウォームキャッシュ。
合計:p95 − 12% [− 9%; − 15%]、 CPU+6%、 5xx変更なし。
フラメグラフ:JSONシリアル化(− 30% CPU)、ボトルネックがデータベースに移行しました。
意思決定:最適化を受け入れる。次のステップはデータベースリクエストをバッチすることです。
アーティファクト:グラフィックス、プロファイル、構成、raw JSON。

合計

良いベンチマークは厳格な方法論+公正な比較+統計的妥当性+プロファイリング+再現性です。仮説を立て、環境を制御し、信頼の間隔を読み、アーティファクトを公開し、改善のコストについて決定を下す。だから、プレゼンテーションで美しい数字を得ることはできませんが、プラットフォームの速度と予測可能性の実際の増加。

Contact

お問い合わせ

ご質問やサポートが必要な場合はお気軽にご連絡ください。いつでもお手伝いします!

統合を開始

Email は 必須。Telegram または WhatsApp は 任意

お名前 任意
Email 任意
件名 任意
メッセージ 任意
Telegram 任意
@
Telegram を入力いただいた場合、Email に加えてそちらにもご連絡します。
WhatsApp 任意
形式:+国番号と電話番号(例:+81XXXXXXXXX)。

ボタンを押すことで、データ処理に同意したものとみなされます。