Phase v10: Freeze v7 as C5/C6-only research preset

Documentation: Baseline fixed per Phase v10
- HAKMEM_V2_GENERATION_SUMMARY.md:
  - v7 repositioned as 「C5/C6 專用研究箱」
  - Mixed baseline: HAKMEM_SMALL_HEAP_V7_ENABLED=0 (OFF)
  - Added Phase v7-7 (Learner), Phase v10 (legacy removal)
  - Learner performance: +127% on C5/C6 workload
  - Size class table: segregated Mixed (v7 OFF) vs C5/C6 preset (v7 ON)

- ENV_PROFILE_PRESETS.md:
  - MIXED_TINYV3_C7_SAFE: explicitly v7 OFF (Mixed baseline)
  - NEW: C5_C6_SMALL_HEAP_V7_LEARNER profile
    - Learner dynamic route switching documentation
    - Test commands and expected performance (38-39M ops/s)
    - Phase v10 deprecation notice (v3/v4/v5 removed)

Purpose:
- Set clear baseline: v7 OFF for Mixed, ON for C5/C6 benchmarks
- Document Learner preset for future reference
- No code changes (docs-only checkpoint)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Moe Charm (CI)
2025-12-12 06:13:15 +09:00
parent bbc4b66a22
commit 397aea0131
2 changed files with 86 additions and 17 deletions

View File

@ -12,6 +12,7 @@
- C7-only SmallObject v3 + Tiny front v3 + LUT + fast classify ON。
- v4 系C6/C7 v4、fast classify v4、small segment v4はすべて OFF。
- Tiny/Pool v2 もすべて OFF。
- **v7 (C5/C6) は OFF** (Phase v10: Mixed 本線では v7 無効化、C5/C6 専用プリセット参照)
- C6 は凍結中Tiny/SmallObject の特別扱いなし。mid/pool の通常経路に任せる。
### ENV 最小セットRelease
@ -279,6 +280,56 @@ perf record -F 5000 --call-graph dwarf -e cycles:u \
---
## Research Profile 3: C5_C6_SMALL_HEAP_V7_LEARNERSmallObject v7 C5/C6 専用プリセット, Phase v10
### 目的
- **C5/C6 サイズ帯専用Mixed 本線では使わない)**
- SmallObject v7 + Learner で動的ルート最適化を検証。
- Learner がワークロード比率を監視し、C5 route を v7 ↔ MID_v3 で自動切り替え。
- Phase v10 で v7 を「C5/C6 専用プリセット」として凍結し、本プリセットで完全に管理。
### 性能実績
- C5/C6 mixed (200-500B, 300K iter):
- **v7 + Learner: 38.7M ops/s** (+127% vs Legacy)
- Learner route switch: C5 ratio 28% < threshold 30% MID_v3 自動切り替え
### ENVv7 C5/C6 opt-in
```sh
HAKMEM_BENCH_MIN_SIZE=200
HAKMEM_BENCH_MAX_SIZE=500
HAKMEM_SMALL_HEAP_V7_ENABLED=1 # ★ v7 ON
HAKMEM_SMALL_HEAP_V7_CLASSES=0x60 # ★ C5(0x20) + C6(0x40)
# Learner は v7 enabled 時にデフォルト ON (Phase v10)
# HAKMEM_SMALL_LEARNER_V7_ENABLED=0 で個別無効化可
```
### テストコマンド
```sh
# C5/C6 混合50/50
HAKMEM_BENCH_MIN_SIZE=200 HAKMEM_BENCH_MAX_SIZE=500 \
HAKMEM_SMALL_HEAP_V7_ENABLED=1 HAKMEM_SMALL_HEAP_V7_CLASSES=0x60 \
./bench_random_mixed_hakmem 300000 400 1
# C6 heavy90% C6, 10% C5→ Learner route switch トリガー
HAKMEM_BENCH_MIN_SIZE=200 HAKMEM_BENCH_MAX_SIZE=500 \
HAKMEM_SMALL_HEAP_V7_ENABLED=1 HAKMEM_SMALL_HEAP_V7_CLASSES=0x60 \
./bench_allocators --allocator hakmem --scenario c6heavy --iterations 10
```
### 期待値
- Throughput: **38-39M ops/s** (C5/C6 mixed)
- Learner log: `[LEARNER_V7] C5 route switch: V7 → MID_V3` (C5 ratio < 30%)
- Route decision: `[POLICY_V7_INIT] C5: v7, C6: v7`
### 注意
- **Mixed 本線(16-1040B)では v7 OFF** (HAKMEM_SMALL_HEAP_V7_ENABLED=0)
- v7 C5/C6 専用他のサイズ帯には影響なし
- Learner C5 の動的最適化のみC6 は固定 v7
- Phase v10 v3/v4/v5 削除済み古い ENV は無視される
---
### 共通注意
- プリセットから外れて単発の ENV を積み足すと再現が難しくなるのでまずは上記いずれかからスタートし変更点を必ずメモしてください
- v2 Pool v2 / Tiny v2はベンチごとに opt-in不要なら常に 0
- **Phase v10**: v3/v4/v5 は削除されました古い ENV は無視されます)。C5/C6 最適化には本プリセット(v7+Learner)を使用してください

View File

@ -22,31 +22,49 @@ Phase v7-4Policy Box 導入をもって、v2 世代は設計上の完成
### L1: SmallObject 新世代v7 / MID v3 / Legacy
#### L1-a: SmallObject v7C6-only 研究箱)
#### L1-a: SmallObject v7C5/C6 専用研究箱)
**狙い**: smallmid を 1 個の SmallHeapCtx + Segment で扱う土台作り
**位置づけPhase v10 確定)**:
- **基準線**: Mixed 本線では `HAKMEM_SMALL_HEAP_V7_ENABLED=0` (OFF)
- **用途**: C5/C6 ベンチマーク専用プリセットLearner ON
- **Status**: 研究実装(設計パターン確立済み)
**実装状況**:
- Phase v7-2: C6-only 本実装完了refill/retire 動作確認)
- Phase v7-3: TLS segment fast path 最適化overhead -7.0% → -4.3%
- Phase v7-4: Policy Box 統合route 決定一元化)
- Phase v7-5b: C5 対応256B blocks
- Phase v7-7: Learner 統合(動的ルート切り替え)
- Phase v10: Learner デフォルト ON、v3/v4/v5 削除
**性能**:
**性能(最新)**:
- C6-only (400-510B, 500K iter):
- Legacy baseline: 58.6M ops/s
- v7 Phase v7-2: 54.5M ops/s (-7.0%)
- v7 Phase v7-3: 56.3M ops/s (-4.3%)
- 改善トレンド: 38% overhead 削減済み
- C5/C6 mixed (200-500B, 300K iter):
- v7 + Learner: 38.7M ops/s (+127% vs Legacy)
- Learner route switch: C5 ratio 28% < threshold 30% MID_v3
**設計完了事項**:
- SmallSegment_v7: 2MiB segment, free page stack
- SmallHeapCtx_v7: TLS context, TLS segment hints (v7-3)
- ColdIface_v7: page refill/retire
- RegionIdBox: v7 segment registration + fast lookup
- SmallPolicyV7: route 決定一元化
- SmallLearnerV7: 動的ワークロード検出
**C5/C6 プリセット**ドキュメント参照:
```bash
# C5/C6 ベンチマーク用Learner ON
HAKMEM_SMALL_HEAP_V7_ENABLED=1 \
HAKMEM_SMALL_HEAP_V7_CLASSES=0x60 \
./bench_random_mixed_hakmem 300000 400 1
```
**残課題**:
- -4.3% overhead → ±0% へmulti-class 拡張で分摊予定)
- C5/C4 対応Phase v7-5 候補)
- Mixed 本線性能との差分解消v3 backend 最適化headerless v6 拡張
#### L1-b: MID v3257-768B 本線)
@ -92,18 +110,18 @@ Phase v7-4Policy Box 導入をもって、v2 世代は設計上の完成
- SmallPageStatsV7: page retire 時に publish
- PolicyLearnerv7-5 候補): stats から最適 route を学習
## 3. サイズ帯の担当整理
## 3. サイズ帯の担当整理Phase v10 確定)
| サイズ | Class | Primary | Secondary | Status |
|--------|-------|---------|-----------|--------|
| 1KB | C7 | ULTRA | - | FROZEN |
| 512B | C6 | v7 / MID_v3 | ULTRA | Research |
| 256B | C5 | MID_v3 | ULTRA | Stable |
| 128B | C4 | ULTRA | MID_v3 | Partial |
| 64B | C3 | Legacy | - | Fallback |
| 32B | C2 | Legacy | - | Fallback |
| 16B | C1 | Legacy | - | Fallback |
| 8B | C0 | Legacy | - | Fallback |
| サイズ | Class | Mixed 本線 | C5/C6 専用 | Status |
|--------|-------|-----------|-----------|--------|
| 1KB | C7 | ULTRA | ULTRA | FROZEN |
| 512B | C6 | MID_v3 | v7+Learner | Research preset |
| 256B | C5 | MID_v3 | v7+Learner | Research preset |
| 128B | C4 | ULTRA | ULTRA | Stable |
| 64B | C3 | Legacy | Legacy | Fallback |
| 32B | C2 | Legacy | Legacy | Fallback |
| 16B | C1 | Legacy | Legacy | Fallback |
| 8B | C0 | Legacy | Legacy | Fallback |
## 4. 最適化達成状況