Files
hakmem/docs/analysis/PHASE4_ALLOC_GATE_SPECIALIZATION_NEXT_INSTRUCTIONS.md
Moe Charm (CI) 141cd8a5be Phase 3 Closure & Phase 4 Preparation
Summary:
- Phase 3 optimization complete (cumulative +8.93%)
- D1 promoted to default (HAKMEM_FREE_STATIC_ROUTE=1, +2.19%)
- D2 frozen (NO-GO, -1.44% regression)
- Phase 4 instructions prepared (D3/Alloc Gate Specialization)

Results:
  B3 (Routing shape): +2.89%
  B4 (Wrapper split): +1.47%
  C3 (Static routing): +2.20%
  C1 (TLS prefetch): NEUTRAL (-0.34%, research box)
  C2 (Metadata cache): NEUTRAL (-0.45%, research box)
  D1 (Free route cache): +2.19% (now default)
  D2 (Wrapper env cache): NO-GO (-1.44%, frozen)
  MID_V3 fix: +13% (structural)

Total Phase 2-3 gain: ~8.93% (37.5M → 51M ops/s)

Updated:
- CURRENT_TASK.md: Phase 3 final results + D3 conditions
- ENV_PROFILE_PRESETS.md: Active optimizations listed
- PHASE3_CACHE_LOCALITY_NEXT_INSTRUCTIONS.md: Phase 3→4 transition
- PHASE4_ALLOC_GATE_SPECIALIZATION_NEXT_INSTRUCTIONS.md: D3 execution plan
- PHASE3_BASELINE_AND_CANDIDATES.md: Post-validation status

Next phase: Phase 4 D3 - Alloc Gate Specialization
- Requires: tiny_alloc_gate_fast self% ≥5% from perf
- Design SSOT: PHASE3_D3_ALLOC_GATE_SPECIALIZATION_1_DESIGN.md
- Execution: PHASE4_ALLOC_GATE_SPECIALIZATION_NEXT_INSTRUCTIONS.md

🤖 Generated with Claude Code

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2025-12-13 23:47:19 +09:00

2.8 KiB
Raw Blame History

Phase 4: Alloc Gate SpecializationD3 実装指示書)

Phase 3 は D1 昇格 / D2 凍結で完全閉鎖。次の “芯” は alloc 側の gate を削る D3。

現在地SSOT

  • Active defaultsMixed:
    • HAKMEM_TINY_ALLOC_ROUTE_SHAPE=1B3
    • HAKMEM_WRAP_SHAPE=1B4
    • HAKMEM_TINY_STATIC_ROUTE=1C3
    • HAKMEM_FREE_STATIC_ROUTE=1D1, promoted
    • HAKMEM_MID_V3_ENABLED=0Mixed 本線 SSOT
  • Frozen / ignore:
    • HAKMEM_WRAP_ENV_CACHE=1D2, NO-GO

Step 0: perf で “GO 条件” を満たしているか確認

判定基準: tiny_alloc_gate_fastself% ≥ 5%

推奨Mixed, iter=20M, ws=400, 1T:

HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFE perf record -F 99 -- \
  ./bench_random_mixed_hakmem 20000000 400 1
perf report --stdio --no-children

メモ(直近の 1-run perf:

  • tiny_alloc_gate_fast self% ≈ 18.8%D3 GO 条件は満たす

Step 1: D3 実装Box Theory

設計メモSSOT: docs/analysis/PHASE3_D3_ALLOC_GATE_SPECIALIZATION_1_DESIGN.md

箱割り(必須)

  • L0: ENV戻せる
    • HAKMEM_ALLOC_GATE_LEGACY_ONLY=0/1default 0
  • L1: Safe-Enable 判定(境界 1 箇所)
    • Mixed 本線が “LEGACY-only” であることを 1 回だけ確認し、成立した場合のみ fast 経路へ
    • Learner ON の場合は必ず disableroute が動的更新されるため)
  • L2: Integration境界 1 箇所)
    • tiny_alloc_gate_fast() の入口でのみ差し替え(既存の意味は変えない)

Safe-Enable 条件Fail-Fast ではなく “自動 disable”

以下のどれかに該当したら D3 は 即 disable して既存経路へフォールバック:

  • learner が有効(例: HAKMEM_SMALL_LEARNER_V7_ENABLED=1
  • route_kind に LEGACY 以外が混入V7/MID/ULTRA/TINY_FIRST 等)
  • そのほか Mixed 本線の固定前提が崩れている

Step 2: A/BGO/NO-GO

Mixed 10-run推奨: iter=20M, ws=400, 1T:

  • Baseline:
HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFE HAKMEM_ALLOC_GATE_LEGACY_ONLY=0 \
  ./bench_random_mixed_hakmem 20000000 400 1
  • Optimized:
HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFE HAKMEM_ALLOC_GATE_LEGACY_ONLY=1 \
  ./bench_random_mixed_hakmem 20000000 400 1

判定10-run mean:

  • GO: +1.0% 以上
  • NO-GO: -1.0% 以下
  • ±1.0%: NEUTRAL研究箱維持、default OFF

Step 3: 昇格GO の場合のみ)

  • MIXED_TINYV3_C7_SAFE プリセットへ default 注入(core/bench_profile.h
  • docs/analysis/ENV_PROFILE_PRESETS.md に結果・rollback 手順を追記
  • CURRENT_TASK.md を “Phase 4 完了” に更新

Step 4: 失敗時の扱い(箱理論)

  • NO-GO/NEUTRAL の場合:
    • D3 は research box として freezedefault OFF
    • 本線は汚さない(プリセット昇格はしない)