Phase MID-V35-HOTPATH-OPT-1 complete: +7.3% on C6-heavy

Step 0: Geometry SSOT
  - New: core/box/smallobject_mid_v35_geom_box.h (L1/L2 consistency)
  - Fix: C6 slots/page 102→128 in L2 (smallobject_cold_iface_mid_v3.c)
  - Applied: smallobject_mid_v35.c, smallobject_segment_mid_v3.c

Step 1-3: ENV gates for hotpath optimizations
  - New: core/box/mid_v35_hotpath_env_box.h
    * HAKMEM_MID_V35_HEADER_PREFILL (default 0)
    * HAKMEM_MID_V35_HOT_COUNTS (default 1)
    * HAKMEM_MID_V35_C6_FASTPATH (default 0)
  - Implementation: smallobject_mid_v35.c
    * Header prefill at refill boundary (Step 1)
    * Gated alloc_count++ in hot path (Step 2)
    * C6 specialized fast path with constant slot_size (Step 3)

A/B Results:
  C6-heavy (257–768B): 8.75M→9.39M ops/s (+7.3%, 5-run mean) 
  Mixed (16–1024B): 9.98M→9.96M ops/s (-0.2%, within noise) ✓

Decision: FROZEN - defaults OFF, C6-heavy推奨ON, Mixed現状維持
Documentation: ENV_PROFILE_PRESETS.md updated

🤖 Generated with Claude Code

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
Moe Charm (CI)
2025-12-12 19:19:25 +09:00
parent e95e61f0ff
commit fe70e3baf5
9 changed files with 211 additions and 57 deletions

View File

@ -48,6 +48,19 @@ HAKMEM_TINY_HEAP_STATS=1
HAKMEM_TINY_HEAP_STATS_DUMP=1
HAKMEM_SMALL_HEAP_V3_STATS=1
```
- **Phase MID-V35-HOTPATH-OPT-1** (FROZEN - research only):
```sh
HAKMEM_MID_V35_HEADER_PREFILL=1 # refill境界でheader先行書き
HAKMEM_MID_V35_HOT_COUNTS=0 # alloc_count削除
HAKMEM_MID_V35_C6_FASTPATH=1 # C6特化 fast path
```
- **Status**: Default OFF, FROZEN (all 3 knobs)
- **Actual Results** (Phase MID-V35-HOTPATH-OPT-1 Mixed A/B):
- Mixed (161024B, MID_V35_OFF): **-0.2%** (誤差範囲, ±2%以内) ✓
- C6-heavy (257768B, MID_V35_ON): **+7.3%** improvement ✅
- **Finding**: Mixed は MID_V3(C6-only) 固定で効果微小C6-heavy のみ効果大
- **Recommendation**: C6_HEAVY_LEGACY_POOLV1 プリセットで推奨ON
- **NOT recommended for**: MIXED_TINYV3_C7_SAFE mainline (keep all defaults OFF)
- **Phase POLICY-FAST-PATH-V2** (FROZEN - research only):
```sh
HAKMEM_TINY_FREE_POLICY_FAST_V2=1 # Fast-path free optimization
@ -100,6 +113,12 @@ HAKMEM_MID_V3_ENABLED=1 # Phase MID-V3: 257-768B, C6 only
HAKMEM_MID_V3_CLASSES=0x40 # C6 only (+11% on C6-heavy)
HAKMEM_MID_V35_ENABLED=1 # Phase v11a-5: C6-heavy で +8% 改善
HAKMEM_MID_V35_CLASSES=0x40 # C6 only (53.1M ops/s)
# Phase MID-V35-HOTPATH-OPT-1: C6-heavy 最速セット推奨ON
# 機能: header prefill + hot counts削除 + C6 fast path (組み合わせで +7.3%)
HAKMEM_MID_V35_HEADER_PREFILL=1 # refill境界でheader先行書き
HAKMEM_MID_V35_HOT_COUNTS=0 # alloc_count削除free_count/retire残す
HAKMEM_MID_V35_C6_FASTPATH=1 # C6特化 fast path (constant slot_size=512)
```
- mid_desc_lookup TLS キャッシュを試すときだけ: `HAKMEM_MID_DESC_CACHE_ENABLED=1` を上乗せデフォルトは OFF)。