Guard madvise ENOMEM and stabilize pool/tiny front v3
This commit is contained in:
@ -44,3 +44,34 @@ Tiny Next Steps (Phase 19 メモ)
|
||||
- HotHeap v2 (C7 専用) の扱い:
|
||||
- 現状は C7-only でも v1 より遅く、Mixed では大きく回帰。標準は `HAKMEM_TINY_HOTHEAP_V2=0`(v1 C7_SAFE を使用)。
|
||||
- 研究/実験で使う場合のみ `HAKMEM_TINY_HOTHEAP_V2=1 HAKMEM_TINY_HOTHEAP_CLASSES=0x80` を明示し、`HAKMEM_TINY_HOTHEAP_V2_STATS=1` で fallback/fast 比率を観測する。結果が悪くてもよいベンチ専用モードとする。
|
||||
|
||||
Phase68(更新版): 次に攻める大きな箱候補
|
||||
----------------------------------------
|
||||
- C7 HotHeap v2:
|
||||
- C7-only / Mixed 長尺プロファイルでは v1 同等以上まで来ており、bench/pro 用には十分な状態。
|
||||
- ただしデフォルトは引き続き v2 OFF(C7 SAFE v1 本線)。今後は「C7-heavy なワークロード向けオプション」として扱う。
|
||||
- C6/C5 TinyHeap v2:
|
||||
- C6 v2 は route 修正後も C6-heavy/Mixed で明確にマイナス。構造は通電したが perf 未達のため、当面は研究箱として据え置く。
|
||||
- C5 への拡張も v2 の再設計フェーズ(TinyHeap v3 相当)でまとめて考えるのが良さそう。
|
||||
- mid/smallmid / pool 側:
|
||||
- Mixed 16–1024B / mid-large ベンチの perf 分析では、pool allocator(hak_pool_try_alloc/free)や smallmid パスが依然として大きな self% を占めている。
|
||||
- Phase68 以降の本命: **pool/smallmid の Hot Box 化・front 整理**。新設 `docs/analysis/POOL_V2_BOX_DESIGN.md` と `docs/design/POOL_HOTBOX_V2_IMPLEMENTATION_GUIDE.md` に箱と境界を記載。
|
||||
- Tiny v2 は C7-only ベースで一旦凍結し、mid/pool を先に +5〜10% 押し上げるのが mimalloc 7〜8割に近づく近道と考える。***
|
||||
|
||||
補足: C7 v3 と Mixed front
|
||||
---------------------------
|
||||
- C7 v3: C7-only / Mixed で v3 ON が +α(slow=1、fallback=0、refill はウォームアップ由来)を確認。デフォルトは OFF のまま、C7-heavy bench で opt-in。
|
||||
- Mixed 16–1024B で v3 ON の userland perf は、リリースビルドでは `free`/`malloc` に潰れて非C7 Tiny front が見えない。DEBUG/記号付きビルドで再 perf を取り、size→class→route 前段や header 書き込みのフラット化を次ターゲット候補として再評価する。
|
||||
|
||||
Phase69: SmallObjectHotBox v3 構想(Tiny + mid/smallmid 統合)
|
||||
----------------------------------------------------------------
|
||||
- 背景:
|
||||
- Tiny (16–1024B) と mid/smallmid の両方で mimalloc に 0.4〜0.5× 程度の差が残っており、Tiny v2 / pool v2 での局所最適では 7〜8割に届きにくいことが見えてきた。
|
||||
- TinyHotHeap v2 (C7-only) は C7-heavy/Mixed 長尺で v1 SAFE を上回るところまで到達した一方、C6/C5 や pool v2 は研究箱のまま凍結となった。
|
||||
- 方針:
|
||||
- Tiny (C0〜C7) と mid/smallmid の一部を統合して扱う SmallObjectHotBox v3 を新設し、「SmallObject 全体を 1 枚の Hot Box」として設計し直す。
|
||||
- Superslab/Segment/Tier/Guard/Remote は Cold Box として据え置き、Hot 側は SmallObjectHotBox v3 に集約する。
|
||||
- 設計は `docs/analysis/SMALLOBJECT_HOTBOX_V3_DESIGN.md` にまとめ、実装タスクは `docs/design/SMALLOBJECT_HOTBOX_V3_IMPLEMENTATION_GUIDE.md` に段階的に記載。
|
||||
- 位置づけ:
|
||||
- Tiny v2 / pool v2 で得た知見(page_of O(1)、current/partial/retire ポリシー、Cold IF の 2 箇所化)を統合しつつ、v3 では「Tiny + mid/smallmid の一体化」を目指す。
|
||||
- 実装は bench/研究プロファイルから段階的に進め、v1/v2 への戻り道を常に維持する。***
|
||||
|
||||
Reference in New Issue
Block a user