Doc: Update CURRENT_TASK.md with Phase V6-HDR-3 completion summary
This commit is contained in:
@ -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 が安全に動作
|
||||
- ✅ ベンチマーク実行で挙動確認
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user