diff --git a/CURRENT_TASK.md b/CURRENT_TASK.md index 608c913a..9e5a11e9 100644 --- a/CURRENT_TASK.md +++ b/CURRENT_TASK.md @@ -1,6 +1,36 @@ # 本線タスク(現在) -## 現在地: Phase MID-V35-HOTPATH-OPT-1 完了 → 次フェーズ選定待ち +## 現在地: Phase POOL-MID-DN-BATCH 完了 ✅ → 次フェーズ選定待ち + +--- + +### Status: Phase POOL-MID-DN-BATCH 完了 ✅ (2025-12-12) + +**Summary**: +- **Goal**: Eliminate `mid_desc_lookup` from pool_free_v1 hot path by deferring inuse_dec +- **Mixed (bench_mid_large_mt_hakmem)**: **+2.8%** improvement ✅ (7.94M → 8.16M ops/s, median) +- **Strategy**: TLS map batching (~32 pages/drain) + thread exit cleanup +- **Decision**: Default OFF (ENV gate),可用于生产环境测试 + +**Key Achievements**: +- Hot path: Zero lookups (O(1) TLS map update only) +- Cold path: Batched lookup + atomic subtract (32x reduction in lookup frequency) +- Thread-safe: pthread_key cleanup ensures pending ops drained on thread exit +- Stats: 82K deferred hits, 2.5K drain calls, 3.5K empty transitions + +**Deliverables**: +- `core/box/pool_mid_inuse_deferred_env_box.h` (ENV gate: HAKMEM_POOL_MID_INUSE_DEFERRED) +- `core/box/pool_mid_inuse_tls_pagemap_box.h` (32-entry TLS map) +- `core/box/pool_mid_inuse_deferred_box.h` (deferred API + drain logic) +- `core/box/pool_mid_inuse_deferred_stats_box.h` (counters + dump) +- `core/box/pool_free_v1_box.h` (integration: fast + slow paths) +- Benchmark: +2.8% median, within target range (+2-4%) + +**ENV Control**: +```bash +HAKMEM_POOL_MID_INUSE_DEFERRED=0 # Default (immediate dec) +HAKMEM_POOL_MID_INUSE_DEFERRED=1 # Enable deferred batching +``` ---