Key changes: - Phase 83-1: Switch dispatch fixed mode (tiny_inline_slots_switch_dispatch_fixed_box) - NO-GO (marginal +0.32%, branch reduction negligible) Reason: lazy-init pattern already optimal, Phase 78-1 pattern shows diminishing returns - Allocator comparison baseline update (10-run SSOT, WS=400, ITERS=20M): tcmalloc: 115.26M (92.33% of mimalloc) jemalloc: 97.39M (77.96% of mimalloc) system: 85.20M (68.24% of mimalloc) mimalloc: 124.82M (baseline) - hakmem PROFILE correction: scripts/run_mixed_10_cleanenv.sh + run_allocator_quick_matrix.sh PROFILE explicitly set to MIXED_TINYV3_C7_SAFE for hakmem measurements Result: baseline stabilized to 55.53M (44.46% of mimalloc) Previous unstable measurement (35.57M) was due to profile leak - Documentation: * PERFORMANCE_TARGETS_SCORECARD.md: Reference allocators + M1/M2 milestone status * PHASE83_1_SWITCH_DISPATCH_FIXED_RESULTS.md: Phase 83-1 analysis (NO-GO) * ALLOCATOR_COMPARISON_QUICK_RUNBOOK.md: Quick comparison procedure * ALLOCATOR_COMPARISON_SSOT.md: Detailed SSOT methodology - M2 milestone status: 44.46% (target 55%, gap -10.54pp) - structural improvements needed 🤖 Generated with Claude Code Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
42 lines
2.5 KiB
Markdown
42 lines
2.5 KiB
Markdown
# 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 ...=${...:-<default>}`
|
||
- “研究箱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 無い)ことを確認した。
|