88 lines
3.8 KiB
Markdown
88 lines
3.8 KiB
Markdown
|
|
# PHASE ML2: 外部LLM向け 質問状(FastLane / Layer Collapse 設計レビュー)
|
|||
|
|
|
|||
|
|
## 0. 目的
|
|||
|
|
|
|||
|
|
- mimalloc との差を詰めるための「次の高 ROI 設計」を外部レビューで得る。
|
|||
|
|
- 箱理論(Box Theory)を守り、**ENV で戻せる**・**境界1箇所**・**Fail-Fast**・**最小可視化**の形で提案してほしい。
|
|||
|
|
|
|||
|
|
## 1. 重要な前提(比較の作法)
|
|||
|
|
|
|||
|
|
- 以後の A/B は **同一バイナリで ENV トグル**が原則(削除/追加で別バイナリにすると、LTO/配置差で結果が崩れる)。
|
|||
|
|
- 参考: `docs/analysis/PHASE5_E7_FROZEN_BOX_PRUNE_AB_TEST_RESULTS.md`
|
|||
|
|
- `bench_setenv_default()` は export 済み ENV を上書きしないため、過去の実験 ENV が残ると比較が壊れる。
|
|||
|
|
- Mixed 10-run 実行補助: `scripts/run_mixed_10_cleanenv.sh`
|
|||
|
|
|
|||
|
|
## 2. 現在地(事実メモ)
|
|||
|
|
|
|||
|
|
### 2.1 競合比較(Mixed 16–1024B, 2025-12-05 時点)
|
|||
|
|
|
|||
|
|
- HAKMEM: **44.45M ops/s**
|
|||
|
|
- mimalloc: **117.20M ops/s**
|
|||
|
|
- system: **90.95M ops/s**
|
|||
|
|
- 出典: `CURRENT_TASK_ARCHIVE_20251210.md`
|
|||
|
|
|
|||
|
|
※ 現在は上積みが進んでいるが、mimalloc との距離感の基準として引用。
|
|||
|
|
|
|||
|
|
### 2.2 直近の勝ち筋
|
|||
|
|
|
|||
|
|
- “分岐形/ヒント” は飽和しやすい(Zen で branch miss rate が低い)。
|
|||
|
|
- 一方で **重複排除(境界の一本化)** と **ENV/TLS 読み回数の削減**は勝ちやすい。
|
|||
|
|
- “凍結箱を削る(diet)” は **NO-GO**(別バイナリ比較になり、配置差が支配的)。
|
|||
|
|
|
|||
|
|
## 3. 読んでほしい資料(最小セット)
|
|||
|
|
|
|||
|
|
1. `AGENTS.md`(箱理論ルール)
|
|||
|
|
2. `CURRENT_TASK.md`(直近の勝ち箱/負け箱の記録)
|
|||
|
|
3. `PERF_PROFILE_ANALYSIS_20251204.md`(ホットスポット俯瞰)
|
|||
|
|
4. `docs/analysis/PHASE5_E5_COMPREHENSIVE_ANALYSIS.md`(E4/E5 系の学び)
|
|||
|
|
5. `docs/analysis/PHASE5_E7_FROZEN_BOX_PRUNE_AB_TEST_RESULTS.md`(別バイナリ A/B の罠)
|
|||
|
|
|
|||
|
|
制約:
|
|||
|
|
- `/home/user/hakmem_private/...` のような **絶対パス**は使わず、ファイル名/パスは **repo 相対**で書いてください。
|
|||
|
|
|
|||
|
|
## 4. 質問(回答フォーマット指定)
|
|||
|
|
|
|||
|
|
### Q1. 次の「芯」の優先順位(必須)
|
|||
|
|
|
|||
|
|
次の 3 案を **ROI / リスク / 工数**で順位付けし、推奨案を 1 つ選んでください。
|
|||
|
|
|
|||
|
|
- A) **Front FastLane**: wrapper + gate + policy + route を “hot 1箱” に畳み、cold 側へ単一フォールバック
|
|||
|
|
- B) **ptr→meta 到達の O(1) 化**を mid/pool に波及(segment/mask 方式で lookup 地獄を避ける)
|
|||
|
|
- C) **触るメモリ削減**(cache miss / minor fault を減らすための geometry/metadata 見直し)
|
|||
|
|
|
|||
|
|
### Q2. 推奨案の Box 分割(必須)
|
|||
|
|
|
|||
|
|
推奨案について、以下を提示してください。
|
|||
|
|
|
|||
|
|
- 箱名(L0/L1/L2…)
|
|||
|
|
- 箱の責務(各 1 文)
|
|||
|
|
- 境界 API(関数名・引数・戻り値)
|
|||
|
|
- “変換点は 1 箇所” をどこに置くか
|
|||
|
|
|
|||
|
|
### Q3. Fail-Fast と安全ゲート(必須)
|
|||
|
|
|
|||
|
|
- fast path に入れる条件(必要最小)
|
|||
|
|
- 必ず fallback する条件(安全側)
|
|||
|
|
- 不変条件(assert/範囲チェック/ワンショットログ等、最小)
|
|||
|
|
|
|||
|
|
### Q4. 戻せる導入プラン(必須)
|
|||
|
|
|
|||
|
|
Phase 0〜2 くらいの小パッチ順序で提示してください。
|
|||
|
|
|
|||
|
|
- ENV gate 名と default
|
|||
|
|
- A/B の評価コマンド(Mixed 10-run + 可能なら perf stat)
|
|||
|
|
- GO/NO-GO 閾値(例: +1.0% 以上で GO、-1.0% 以下で NO-GO 等)
|
|||
|
|
|
|||
|
|
### Q5. “mimalloc に追いつく” の現実ライン(必須)
|
|||
|
|
|
|||
|
|
- 現状の多層構造(wrapper→gate→policy→route→handler)を保ったままの上限(ざっくり %)
|
|||
|
|
- parity に近づくために「統合/削除しないと無理」な層がどこか(具体)
|
|||
|
|
|
|||
|
|
## 5. 期待する回答形式(これで返してほしい)
|
|||
|
|
|
|||
|
|
1. 1枚サマリ(箇条書き)
|
|||
|
|
2. Box 図(ASCIIでOK)
|
|||
|
|
3. API 一覧
|
|||
|
|
4. A/B 手順と閾値
|
|||
|
|
5. リスクと対策(戻せる手段を含む)
|