Files
hakmem/docs/analysis/RESEARCH_BOXES_SSOT.md
Moe Charm (CI) 89a9212700 Phase 83-1 + Allocator Comparison: Switch dispatch fixed (NO-GO +0.32%), PROFILE correction, SCORECARD update
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>
2025-12-18 18:50:00 +09:00

42 lines
2.5 KiB
Markdown
Raw 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.

# 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 無い)ことを確認した。