# Research Boxes SSOT(凍結箱の扱いと迷子防止) 目的: 「凍結箱が増えて混乱する」を防ぐ。**削除はしない**(layout tax で性能が符号反転しやすいため)。 代わりに **“見える化 + 触らない規約 + cleanenv”**で整理する。 ## 原則(Box Theory 運用) - **本線(SSOT)**: `scripts/run_mixed_10_cleanenv.sh` + `HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFE` を正とする。 - **研究箱(FROZEN)**: 既定 OFF。使うときは ENV を明示し、A/B は同一バイナリで行う。 - **削除禁止(原則)**: - `.o` をリンクから外す / 大量削除は layout tax で速度が動くので封印。 - 代替: `#if HAKMEM_*_COMPILED` の compile-out、または hot path からの完全除外(参照しない)で“凍結”する。 ## “ころころ”の典型原因と対策 - `HAKMEM_PROFILE` 未指定 → route が変わり数値が破綻 - 対策: 比較スクリプトは必ず `HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFE` を明示 - export 漏れ(過去実験の ENV が残っている) - 対策: `scripts/run_mixed_10_cleanenv.sh` を正として運用 - 別バイナリ比較(layout差) - 対策: allocator reference は `scripts/run_allocator_preload_matrix.sh`(同一バイナリLD_PRELOAD)も併用 - CPU power/thermal の変動(同一マシンでも起きる) - 対策: `HAKMEM_BENCH_ENV_LOG=1` で `scripts/run_mixed_10_cleanenv.sh` が簡易環境ログを出力する(governor/EPP/freq) ## 研究箱の“棚卸し”のやり方(手順) 1. ノブ一覧を出す: - `scripts/list_hakmem_knobs.sh` 2. SSOTで常に固定する値は `scripts/run_mixed_10_cleanenv.sh` に寄せる: - “本線ON”はデフォルト値にして、漏れ防止で `export ...=${...:-}` - “研究箱OFF”は `export ...=0` で明示 3. 研究箱を触るときは、必ず結果docに: - 対象ノブ、default、A/B条件(binary、profile、ITERS/WS、RUNS) - GO/NEUTRAL/NO-GO と rollback 方法 ## いまのおすすめ方針(短縮) - 本線の性能/安定を崩さない目的なら「研究箱を消す」より「SSOTで踏まない」を徹底するのが安全。 - 研究箱を“削除”するのは、次の条件を満たしたときだけ: - (1) 少なくとも 2週間以上使っていない、(2) SSOT/bench_profile/cleanenv が参照していない、 (3) 同一バイナリ A/B で削除しても性能が変わらない(layout tax 無い)ことを確認した。 ## 外部相談のSSOT(貼り付けパケット) 凍結箱が増えてくると「どの経路を踏んでるか」が外部に説明しづらくなるので、 レビュー依頼は “圧縮パケット” を正として使う: - 生成: `scripts/make_chatgpt_pro_packet_free_path.sh` - スナップショット: `docs/analysis/FREE_PATH_REVIEW_PACKET_CHATGPT.md`