|
|
e0fb7d550a
|
Phase v5-2: SmallObject v5 C6-only 本実装 (WIP - header fix)
本実装修正:
- tiny_region_id_write_header() を追加: USER pointer を正しく返す
- TLS slot からの segment 探索 (page_meta_of)
- Page-level allocation で segment 再利用
- 2MiB alignment 保証 (4MiB 確保 + alignment)
- free パスの route 修正 (v4 から v5 への fallthrough 削除)
動作確認:
- SEGV 消失: alloc/free 基本動作 OK
- 性能: ~18-20M ops/s (baseline 43-47M の約 40-45%)
- 回帰原因: TLS slot 線形探索 O(n)、find_page O(n)
残タスク:
- O(1) segment lookup 最適化 (hash または array 直接参照)
- find_page 除去 (segment lookup 成功時)
- partial_count/list 管理の最適化
ENV デフォルト OFF なので本線影響なし。
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-11 04:14:51 +09:00 |
|
|
|
9c24bebf08
|
Phase v5-1: SmallObject v5 C6-only route stub 接続
- tiny_route_env_box.h: TINY_ROUTE_SMALL_HEAP_V5 enum 追加、route snapshot で C6→v5 分岐
- malloc_tiny_fast.h: alloc/free switch に v5 case 追加(v1/pool fallback)
- smallobject_hotbox_v5.c: stub 実装(alloc は NULL 返却、free は no-op)
- smallobject_hotbox_v5_box.h: 関数 signature に ctx パラメータ追加
- Makefile: core/smallobject_hotbox_v5.o をリンクリストに追加
- ENV_PROFILE_PRESETS.md: v5-1 プリセット追記
- CURRENT_TASK.md: Phase v5-1 完了記録
**特性**:
- ENV: HAKMEM_SMALL_HEAP_V5_ENABLED=1 / HAKMEM_SMALL_HEAP_V5_CLASSES=0x40 で opt-in
- テスト結果: C6-heavy (v5 OFF 15.5M → v5 ON 16.4M ops/s, 正常), Mixed 47.2M ops/s, SEGV/assert なし
- 挙動は v1/pool fallback と同じ(実装は v5-2)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
2025-12-11 03:25:37 +09:00 |
|
|
|
dedfea27d5
|
Phase v5-0 refactor: ENV統一・マクロ化・構造体最適化
- ENV initialization を sentinel パターンで統一
- ENV_UNINIT/ENABLED/DISABLED 定数追加
- __builtin_expect で初期化チェックを最適化
- small_heap_v5_enabled/class_mask を統一パターンに変更
- ポインタマクロ化(O(1) segment/page 計算)
- SMALL_SEGMENT_V5_BASE_FROM_PTR: ptr から segment base を mask で計算
- SMALL_SEGMENT_V5_PAGE_IDX: segment 内の page_idx を shift で計算
- SMALL_SEGMENT_V5_PAGE_META: page_meta への O(1) access(bounds check付き)
- SMALL_SEGMENT_V5_VALIDATE_MAGIC: magic 検証
- SMALL_SEGMENT_V5_VALIDATE_PTR: Fail-Fast validation pipeline
- SmallClassHeapV5 に partial_count 追加
- partial ページリストのカウンタを追加(refill/retire 最適化用)
- SmallPageMetaV5 の field 再配置(L1 cache 最適化)
- hot fields (free_list, used, capacity) を先頭に集約
- metadata (class_idx, flags, page_idx, segment) を後方配置
- total 24B、offset コメント追加
- route priority ENV 追加
- HAKMEM_ROUTE_PRIORITY={v4|v5|auto}(default: v4)
- enum small_route_priority 定義
- small_route_priority() 関数追加
- segment_size override ENV 追加
- HAKMEM_SMALL_HEAP_V5_SEGMENT_SIZE(default: 2MiB)
- power of 2 & >= 64KiB validation
挙動: 完全不変(v5 route は呼ばれない、ENV default OFF)
テスト: Mixed 16–1024B で 43.0–43.8M ops/s(変化なし)、SEGV/assert なし
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
2025-12-11 03:19:18 +09:00 |
|
|
|
83d4096fbc
|
Phase v5-0: SmallObject v5 の設計・型/IF/ENV スケルトン追加
設計ドキュメント:
- docs/analysis/SMALLOBJECT_V5_DESIGN.md: v5 アーキテクチャ全体設計
新規ファイル (v5 スケルトン):
- core/box/smallobject_hotbox_v5_box.h: HotBox v5 型定義
- core/box/smallsegment_v5_box.h: Segment v5 型定義
- core/box/smallobject_cold_iface_v5.h: ColdIface v5 IF宣言
- core/box/smallobject_v5_env_box.h: ENV ゲート
- core/smallobject_hotbox_v5.c: 実装 stub (完全 fallback)
特徴:
✅ 型とインターフェースのみ定義(v5-0 は機能なし)
✅ ENV デフォルト OFF(HAKMEM_SMALL_HEAP_V5_ENABLED=0)
✅ 挙動完全不変(Mixed/C6 benchmark 確認済み)
✅ v4 との区別を明確化 (*_v5 suffix)
✅ v5-1 (stub) → v5-2 (本実装) → v5-3 (Mixed) への段階実装準備完了
フェーズ:
- v5-0: 型定義のみ(現在)
- v5-1: C6-only stub route 追加
- v5-2: Segment/HotBox 本実装 (C6-only bench A/B)
- v5-3: Mixed での段階昇格 (C6 → C5 → ...)
目標性能: Mixed 16–1024B で 50–60M ops/s (mimalloc の 5割)
🤖 Generated with Claude Code
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
2025-12-11 03:09:57 +09:00 |
|