Files
hakmem/docs/analysis/PHASE4_ALLOC_GATE_SPECIALIZATION_NEXT_INSTRUCTIONS.md

74 lines
2.4 KiB
Markdown
Raw Normal View History

# Phase 4: Alloc Gate SpecializationD3 実装指示書)
Phase 3 は **D1 昇格 / D2 凍結**で完全閉鎖。次の “芯” は alloc 側の gate を削る D3。
## 現在地SSOT
- Active defaultsMixed:
- `HAKMEM_TINY_ALLOC_ROUTE_SHAPE=1`B3
- `HAKMEM_WRAP_SHAPE=1`B4
- `HAKMEM_TINY_STATIC_ROUTE=1`C3
- `HAKMEM_FREE_STATIC_ROUTE=1`D1, promoted
- `HAKMEM_MID_V3_ENABLED=0`Mixed 本線 SSOT
- Frozen / ignore:
- `HAKMEM_WRAP_ENV_CACHE=1`D2, NO-GO
## Step 0: perf で “GO 条件” を満たしているか確認
判定基準: `tiny_alloc_gate_fast`**self% ≥ 5%**
推奨Mixed, iter=20M, ws=400, 1T:
```bash
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
2025-12-14 00:05:11 +09:00
設計メモSSOT: `docs/analysis/PHASE4_D3_ALLOC_GATE_SPECIALIZATION_1_DESIGN.md`
### 箱割り(必須)
- L0: ENV戻せる
2025-12-14 00:05:11 +09:00
- `HAKMEM_ALLOC_GATE_SHAPE=0/1`default 0
- L1: Gate Shape境界 1 箇所)
- `tiny_alloc_gate_fast()` 内の分岐形だけを変更(意味は変えない)
- `tiny_route_get()` を呼ばずに `g_tiny_route[]` を直接読むrelease logging branch を避ける)
- **Safety**: `g_tiny_route[ci] == ROUTE_POOL_ONLY` のときは必ず `NULL` を返す(`HAKMEM_TINY_PROFILE=hot/off` を壊さない)
## Step 2: A/BGO/NO-GO
Mixed 10-run推奨: iter=20M, ws=400, 1T:
- Baseline:
```bash
2025-12-14 00:05:11 +09:00
HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFE HAKMEM_ALLOC_GATE_SHAPE=0 \
./bench_random_mixed_hakmem 20000000 400 1
```
- Optimized:
```bash
2025-12-14 00:05:11 +09:00
HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFE HAKMEM_ALLOC_GATE_SHAPE=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
- 本線は汚さない(プリセット昇格はしない)