Files
hakmem/docs/analysis/PHASE5_E7_FROZEN_BOX_PRUNE_NEXT_INSTRUCTIONS.md

83 lines
2.8 KiB
Markdown
Raw Normal View History

# Phase 5 E7: Frozen Box Prune結果: NO-GO / 差し戻し)
## Status2025-12-14
- 結果: **NO-GO**(削除後 **-3% 台**
- 結論: 現状は “diet” を採用しない(凍結箱はコードとして保持)
- 詳細: `docs/analysis/PHASE5_E7_FROZEN_BOX_PRUNE_AB_TEST_RESULTS.md`
## 背景E5-2/E5-4 NEUTRAL + E6 NO-GO
E5-2 / E5-4 / E6 の学び:
- “実験箱” を ENV gate で差し込むだけでも **branch + code size の税**が発生する
- それが勝ち箱の gains を相殺しやすい(特に Zen 系で miss rate が既に低い場合)
狙い(当初案):
- **凍結済みの研究箱**を hot path から外し、baseline を “痩せさせる”
結果:
- ビルド差分 A/B で **有意な回帰**が出たため、この方針は撤回する。
- (配置/最適化の二次効果が支配的で、単純な “branch 税回収” にならなかった)
---
## Step 0: 対象(消してよい研究箱)
優先順:
1. E6ENV snapshot shape: NO-GO、hot path を肥大化させる
2. E5-4Malloc Tiny Direct: NEUTRAL、malloc wrapper に余計な分岐を足す
3. E5-2Header write-once: NEUTRAL、alloc hot path 側に分岐を足すなら同様に外す
---
## Step 1: E6 の実装を削除doc だけ残す)
- `core/box/env_snapshot_shape_env_box.h` を削除
- `core/front/malloc_tiny_fast.h` / `core/box/tiny_metadata_cache_hot_box.h` /
`core/box/tiny_legacy_fallback_box.h` の E6 分岐を削除(元に戻す)
- `docs/analysis/PHASE5_E6_ENV_SNAPSHOT_SHAPE_AB_TEST_RESULTS.md` は残す(失敗の記録)
---
## Step 2: E5-4 の実装を削除doc だけ残す)
- `core/box/malloc_tiny_direct_env_box.h` / `core/box/malloc_tiny_direct_stats_box.h` を削除
- `core/box/hak_wrappers.inc.h` の E5-4 追加分岐(`malloc_tiny_direct_enabled()`)を削除
- `docs/analysis/PHASE5_E5_4_MALLOC_TINY_DIRECT_AB_TEST_RESULTS.md` は残す
---
## Step 3: A/B削除前/削除後)
削除は ENV で切れないため “ビルド差分 A/B” になる。
1) 削除前(現 HEADで 10-run:
```sh
HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFE ./bench_random_mixed_hakmem 20000000 400 1
```
2) 削除後で 10-run:
```sh
HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFE ./bench_random_mixed_hakmem 20000000 400 1
```
判定:
- GO: mean **+0.8% 以上**“diet” は小粒になりがちなので閾値を下げる)
- ±0.8%: NEUTRAL消しても OK、保守性メリットで採用可
- -0.8% 以下: 差し戻し(予想外の最適化阻害がある)
---
## Step 4: 健康診断(必須)
```sh
scripts/verify_health_profiles.sh
```
---
## Step 5: ドキュメント更新
- `CURRENT_TASK.md`: E6/E5-4 を “凍結 → 実装削除doc のみ保持)” と明記
- `docs/analysis/PHASE5_E5_NEXT_INSTRUCTIONS.md`: 次の芯を E7dietに更新