Doc: Update CURRENT_TASK.md with Phase V6-HDR-3 completion summary

This commit is contained in:
Moe Charm (CI)
2025-12-11 23:52:39 +09:00
parent df216b6901
commit 969170c0fb

View File

@ -166,11 +166,76 @@ C6-heavy 257-768B: 26.7M ops/s
C6-heavy 257-768B: 26.1M ops/s (MISMATCH なし)
```
### 次のフェーズ (V6-HDR-3 提案)
---
- v6 segment 実割り当て(現状は RegionIdBox lookup が常に UNKNOWN を返す
- C6 route を v6 専用にして header 依存を完全除去
- Mixed benchmark でも v6 headerless を安全確認
## Phase V6-HDR-3: SmallSegmentV6 実割り当て(完了
### 目的
V6-HDR-2 で connectionした headerless free/alloc を実際に機能させるため、SmallSegmentV6 の TLS-scope segment registration を実装する。RegionIdBox lookup が SMALL_V6 を返すようにして、headerless design のフルチェーンを完成させる。
### 実装タスク
| No | タスク | 状態 |
|----|--------|------|
| 1 | SmallSegmentV6 実割り当てロジック確認 | ✅ |
| 2 | small_v6_get_ctx() で segment 取得確認 | ✅ |
| 3 | RegionIdBox へ segment 登録実装 | ✅ |
| 4 | v6 alloc で segment 作成時の header 書き込み確認 | ✅ |
| 5 | RegionIdBox lookup が SMALL_V6 を返す確認 | ✅ |
| 6 | Mixed でも v6 部分 headerless 有効化 | ✅ |
| 7 | ベンチマーク 測定headerless 効領確認)| ✅ |
### 実装詳細
1. **SmallSegmentV6 allocation** (既に v6-0 で実装済み)
- `smallsegment_v6.c`: `small_segment_v6_acquire_for_thread()` で mmap allocation + 2MiB alignment
2. **Segment registration** (`core/region_id_v6.c` 新規)
- TLS-scoped registration: 4つの static __thread 変数でセグメント情報をキャッシュ
- `region_id_register_v6_segment(seg)`: segment base/end を TLS に記録
- `region_id_lookup_v6(ptr)`: TLS segment range check を最初に実行 → O(1) hit
3. **Region type include** (`core/box/region_id_v6_box.h`)
- `#include "smallsegment_v6_box.h"` 追加SmallSegmentV6 type 参照用)
- Function declaration: `region_id_register_v6_segment(SmallSegmentV6* seg)`
4. **Segment registration call** (`core/smallobject_core_v6.c` 変更)
- `small_heap_ctx_v6()` で segment 取得後に `region_id_register_v6_segment(seg)` 呼び出し
- region_id_observe_lookup() を small_v6_region_observe_validate() で呼び出し追加
### ENV 変数
| ENV | Default | Description |
|-----|---------|-------------|
| `HAKMEM_SMALL_HEAP_V6_ENABLED` | 0 | v6 route 有効化 |
| `HAKMEM_SMALL_HEAP_V6_CLASSES` | 0 | v6 対象クラスマスク (0x40=C6, 0x70=C4+C5+C6) |
| `HAKMEM_SMALL_HEAP_V6_HEADERLESS` | 0 | headerless mode 有効化 |
| `HAKMEM_SMALL_V6_REGION_OBSERVE` | 0 | RegionIdBox class_idx 検証ログ |
| `HAKMEM_REGION_ID_V6_OBSERVE` | 0 | RegionIdBox lookup ログ |
### ベンチマーク結果
```
# Baseline (v6 OFF)
Size 257-768B: 9.68M ops/s
# C6-only v6 (0x40)
Size 257-768B: 8.88M ops/s (-8.3%)
# C4+C5+C6 v6 Mixed (0x70)
Size 64-768B: 9.34M ops/s (-3.5%)
```
### 検証項目
- ✅ SmallSegmentV6 は mmap allocation で既に実装済みv6-0
- ✅ small_heap_ctx_v6() で segment 取得時に registration 呼び出し
- ✅ RegionIdBox lookup が TLS segment をチェック
- ✅ Header write は refill/carve time のみalloc/free で無し)
- ✅ region_id_lookup_v6() が SMALL_V6 を返すようになった
- ✅ Mixed mode でも v6 headerless が安全に動作
- ✅ ベンチマーク実行で挙動確認
---