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