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

2.5 KiB
Raw Blame History

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=1scripts/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 無い)ことを確認した。