2025-12-14 08:11:20 +09:00
|
|
|
|
# Phase 5 E7: Frozen Box Prune(結果: NO-GO / 差し戻し)
|
|
|
|
|
|
|
|
|
|
|
|
## Status(2025-12-14)
|
|
|
|
|
|
|
|
|
|
|
|
- 結果: **NO-GO**(削除後 **-3% 台**)
|
|
|
|
|
|
- 結論: 現状は “diet” を採用しない(凍結箱はコードとして保持)
|
|
|
|
|
|
- 詳細: `docs/analysis/PHASE5_E7_FROZEN_BOX_PRUNE_AB_TEST_RESULTS.md`
|
2025-12-14 07:18:59 +09:00
|
|
|
|
|
|
|
|
|
|
## 背景(E5-2/E5-4 NEUTRAL + E6 NO-GO)
|
|
|
|
|
|
|
|
|
|
|
|
E5-2 / E5-4 / E6 の学び:
|
|
|
|
|
|
- “実験箱” を ENV gate で差し込むだけでも **branch + code size の税**が発生する
|
|
|
|
|
|
- それが勝ち箱の gains を相殺しやすい(特に Zen 系で miss rate が既に低い場合)
|
|
|
|
|
|
|
2025-12-14 08:11:20 +09:00
|
|
|
|
狙い(当初案):
|
2025-12-14 07:18:59 +09:00
|
|
|
|
- **凍結済みの研究箱**を hot path から外し、baseline を “痩せさせる”
|
2025-12-14 08:11:20 +09:00
|
|
|
|
|
|
|
|
|
|
結果:
|
|
|
|
|
|
- ビルド差分 A/B で **有意な回帰**が出たため、この方針は撤回する。
|
|
|
|
|
|
- (配置/最適化の二次効果が支配的で、単純な “branch 税回収” にならなかった)
|
2025-12-14 07:18:59 +09:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## Step 0: 対象(消してよい研究箱)
|
|
|
|
|
|
|
|
|
|
|
|
優先順:
|
|
|
|
|
|
1. E6(ENV snapshot shape): NO-GO、hot path を肥大化させる
|
|
|
|
|
|
2. E5-4(Malloc Tiny Direct): NEUTRAL、malloc wrapper に余計な分岐を足す
|
|
|
|
|
|
3. E5-2(Header 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`: 次の芯を E7(diet)に更新
|