Files
hakmem/docs/analysis/BENCH_REPRODUCIBILITY_SSOT.md
2025-12-19 03:45:01 +09:00

63 lines
2.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Bench Reproducibility SSOTころころ防止の最低限
目的: 「数%を詰める開発」で一番きつい **ベンチが再現しない問題**を潰す。
補助: buildの使い分けは `docs/analysis/SSOT_BUILD_MODES.md` を正とする。
## 1) まず結論(よくある原因)
同じマシンでも、以下が変わると 515% は普通に動く。
- **CPU power/thermal**governor / EPP / turbo
- **HAKMEM_PROFILE 未指定**route が変わる)
- **ベンチのサイズレンジ漏れ**`HAKMEM_BENCH_MIN_SIZE/MAX_SIZE` で class 分布が変わる)
- **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
- サイズレンジは SSOT 側で固定runner が強制):
- `HAKMEM_BENCH_MIN_SIZE=16`
- `HAKMEM_BENCH_MAX_SIZE=1040`
- 任意(切り分け用):
- `HAKMEM_BENCH_ENV_LOG=1`CPU governor/EPP/freq をログ)
## 3) referenceallocator間比較の正
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`
- `SSOT_MIN_SIZE/SSOT_MAX_SIZE` でレンジを明示的に上書きできるexport 漏れの影響を受けない)
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` の出力が **同じ**条件同士で比較すること。
## 6) 外部レビュー(貼り付けパケット)
「コードを圧縮して貼る」用途は、毎回の手作業を減らすためにパケット生成を使う:
- 生成スクリプト: `scripts/make_chatgpt_pro_packet_free_path.sh`
- 生成物(スナップショット): `docs/analysis/FREE_PATH_REVIEW_PACKET_CHATGPT.md`