Phase 14 v1: Pointer-Chase Reduction (tcache) NEUTRAL (+0.20%)
Implementation:
- Intrusive LIFO tcache layer (L1) before UnifiedCache
- TLS per-class bins (head pointer + count)
- Intrusive next pointers (via tiny_next_store/load SSOT)
- Cap: 64 blocks per class (default)
- ENV: HAKMEM_TINY_TCACHE=0/1 (default: 0, OFF)
A/B Test Results (Mixed 10-run):
- Baseline (TCACHE=0): 51,083,379 ops/s
- Optimized (TCACHE=1): 51,186,838 ops/s
- Mean delta: +0.20% (below +1.0% GO threshold)
- Median delta: +0.59%
Verdict: NEUTRAL - Freeze as research box (default OFF)
Root Cause (v1 wiring incomplete):
- Free side pushes to tcache via unified_cache_push()
- Alloc hot path (tiny_hot_alloc_fast) doesn't consume tcache
- tcache becomes "sink" without alloc-side pop → ROI not measurable
Files:
- Created: core/box/tiny_tcache_{env_box,box}.h, tiny_tcache_env_box.c
- Modified: core/front/tiny_unified_cache.h (integration)
- Modified: core/bench_profile.h (refresh sync)
- Modified: Makefile (build integration)
- Results: docs/analysis/PHASE14_POINTER_CHASE_REDUCTION_1_AB_TEST_RESULTS.md
- v2 Instructions: docs/analysis/PHASE14_POINTER_CHASE_REDUCTION_2_NEXT_INSTRUCTIONS.md
Next: Phase 14 v2 (connect tcache to tiny_front_hot_box alloc/free hot path)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@ -147,3 +147,12 @@ GO/NO-GO:
|
||||
- tcache hit 率が高い場合、配列アクセス・FIFO の古い再利用を回避できる
|
||||
- “system malloc が速い” の差分(tcache 的挙動)に寄せる最短の一手
|
||||
|
||||
---
|
||||
|
||||
## Update(2025-12-15)
|
||||
|
||||
v1 の統合点(`core/front/tiny_unified_cache.h`)だけでは、現行の main alloc hot path(`tiny_hot_alloc_fast()`)が tcache を消費しないため、
|
||||
`HAKMEM_TINY_TCACHE=1` のとき tcache が “sink” になりやすい。
|
||||
|
||||
次は hot path(`core/box/tiny_front_hot_box.h`)へ pop/push を接続して、通電した状態で再 A/B を取る(Phase 14 v2):
|
||||
- `docs/analysis/PHASE14_POINTER_CHASE_REDUCTION_2_NEXT_INSTRUCTIONS.md`
|
||||
|
||||
Reference in New Issue
Block a user