# Bench Reproducibility SSOT(ころころ防止の最低限) 目的: 「数%を詰める開発」で一番きつい **ベンチが再現しない問題**を潰す。 ## 1) まず結論(よくある原因) 同じマシンでも、以下が変わると 5–15% は普通に動く。 - **CPU power/thermal**(governor / EPP / turbo) - **HAKMEM_PROFILE 未指定**(route が変わる) - **export 漏れ**(過去の ENV が残る) - **別バイナリ比較**(layout tax: text 配置が変わる) ## 2) SSOT(最適化判断の正) - Runner: `scripts/run_mixed_10_cleanenv.sh` - 必須: - `HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFE` を明示 - `RUNS=10`(ノイズを平均化) - `WS=400`(SSOT) - 任意(切り分け用): - `HAKMEM_BENCH_ENV_LOG=1`(CPU governor/EPP/freq をログ) ## 3) reference(allocator間比較の正) allocator比較は layout tax が混ざるため **reference**。 ただし “公平さ” を上げるなら同一バイナリで測る: - Same-binary runner: `scripts/run_allocator_preload_matrix.sh` - `bench_random_mixed_system` を固定して `LD_PRELOAD` を差し替える ## 4) “ころころ”を止める運用(最低限の儀式) 1. SSOT実行は必ず cleanenv: - `scripts/run_mixed_10_cleanenv.sh` 2. 毎回、環境ログを残す: - `HAKMEM_BENCH_ENV_LOG=1` 3. 結果をファイル化(後から追える形): - `scripts/bench_ssot_capture.sh` を使う(git sha / env / bench出力をまとめて保存) ## 5) 重要メモ(AMD pstate epp) `amd-pstate-epp` 環境で - governor=`powersave` - energy_perf_preference=`power` のままだと、ベンチが“遅い側”に寄ることがある。 まずは `HAKMEM_BENCH_ENV_LOG=1` の出力が **同じ**条件同士で比較すること。