Optimize C6 heavy and C7 ultra performance analysis with refined design refinements

- Update environment profile presets and visibility analysis
- Enhance small object and tiny segment v4 box implementations
- Refine C7 ultra and C6 heavy allocation strategies
- Add comprehensive performance metrics and design documentation

🤖 Generated with Claude Code

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
Moe Charm (CI)
2025-12-10 22:57:26 +09:00
parent 9460785bd6
commit 2a13478dc7
25 changed files with 718 additions and 41 deletions

View File

@ -26,6 +26,19 @@
- UF-1: `core/box/tiny_c7_ultra_box.h` / `core/tiny_c7_ultra.c` を追加。ENV `HAKMEM_TINY_C7_ULTRA_ENABLED`(デフォルト OFFで front から C7 ULTRA stub を経由し、内部では既存 C7 v3 の so_alloc/so_free を呼ぶだけで挙動・性能は不変。
- UF-2: ULTRA TLS に自前 freelist と C7 ページジオメトリを持たせ、C7 v3 ColdIface から 1 ページ lease→自前 carve→ヘッダ書きで返すホットパスを実装。範囲外/失敗は so_alloc/so_free へ即フォールバック。Mixed 161024BC7-only v3 本線, ws=400, 1Mで ULTRA ON は OFF 比でおおよそ +9% 程度の改善を確認segv/assert なし。UF-3 以降で専用 2MiB セグメントmask 判定による完全ヘッダレス化を予定。
### Phase UF-3: C7 ULTRA 専用セグメントデフォルトON
- 追加: `core/box/tiny_c7_ultra_segment_box.h` / `core/tiny_c7_ultra_segment.c` で 2MiB セグメント64KiB ページ)を mmap、mask 判定で page_of を引く箱を追加。ULTRA TLS から carve/push できるように統合。
- front gate: `HAKMEM_TINY_C7_ULTRA_ENABLED` デフォルト ON。seg 外 ptr は so_free(7) へフォールバックする Fail-Fast オーバーレイ。
- Mixed 161024B (ws=400, 1M): ULTRA ON ≈ **4445M ops/s**ULTRA OFF は ≈35M。C7-only (MIN=MAX=1024): ULTRA ON ≈ **57.5M ops/s**, OFF ≈ **38.1M ops/s**。segv/assert なし。
### Phase UF-4: C7 ULTRA header light研究箱, デフォルト OFF
- 目的: ULTRA alloc/free から毎回の tiny_region_id_write_header を外し、carve 時の一括初期化に寄せる。
- 変更: freelist next をヘッダ直後に保存するように変更(ヘッダを保持したまま push/pop。ENV `HAKMEM_TINY_C7_ULTRA_HEADER_LIGHT`default 0を tiny_front_v3_env_box Snapshot に追加。ULTRA carve 時に ON なら全ブロックへ 1 回だけヘッダを書き、alloc ではヘッダ済みなら書き直さない。
- A/B:
- Mixed 161024B (C7-only v3, ULTRA ON, ws=400, iters=1M): OFF **45.03M ops/s** → ON **43.97M ops/s**-2% 程度, segv/assert なし)。
- C7-only (MIN=MAX=1024, ULTRA ON): OFF **55.37M ops/s** → ON **55.90M ops/s**+1% 程度)。
- 方針: header light は研究箱のまま。Mixed ではわずかにマイナスなのでデフォルト OFF を維持。C7-only ベンチでわずかにプラスが出るため、今後の ULTRA pf/segment 改善と合わせて再評価する。
### Phase C6-FREEZE: C6 は mid/pool の普通クラスに固定(研究箱に退避)
- 目的: C6 を Tiny/SmallObject/ULTRA で特別扱いしないのを標準とし、C6 v3/v4/ULTRA/flatten はすべて ENV opt-in の研究箱に戻す。
- 変更: