29 lines
1.5 KiB
Markdown
29 lines
1.5 KiB
Markdown
|
|
Phase 6.17 Results (2025‑10‑23)
|
|||
|
|
|
|||
|
|
What we shipped
|
|||
|
|
- Mid headerless (alloc+free hot path):
|
|||
|
|
- HDR_LIGHT>=1: allocでヘッダ未書込み、freeはページ記述子でMid判定しヘッダ検証回避。
|
|||
|
|
- Transfer Cache gating:
|
|||
|
|
- inbox非空かつ ring->top < trigger のときだけdrain(ENV: HAKMEM_TC_DRAIN_TRIGGER, default 1)。
|
|||
|
|
- drain上限(ENV: HAKMEM_TC_DRAIN_MAX, 推奨 64)。
|
|||
|
|
- Mid Active Page 2枚化:
|
|||
|
|
- TLS active pageをa/bの2枚に拡張。枯渇時はslot解放。
|
|||
|
|
- Makefile: RING_CAPをビルド時切替(8/16)
|
|||
|
|
|
|||
|
|
Bench (10s, larson, BURST)
|
|||
|
|
- Tiny 8–64B(参考: HEAD2HEAD_FINAL)
|
|||
|
|
- 4T: hakmem 56.9M vs mimalloc 73.9M(-23%)
|
|||
|
|
- Mid 2–32KiB(本フェーズの代表)
|
|||
|
|
- ベスト帯(最近値): 12.9–13.5M(条件により〜14.2M再現)
|
|||
|
|
- TC gated(trigger=1, drain_max=64): 13.24M(docs/benchmarks/20251023_052254_MID_TC_TRIGGER)
|
|||
|
|
- P0+P1統合: 14.36M(docs/benchmarks/20251023_045515_MID_P0P1 近傍と併せて)
|
|||
|
|
|
|||
|
|
Takeaways
|
|||
|
|
- Midの「キャッシュヒット時の無駄」を削減(TC無条件drain→必要時のみ)。
|
|||
|
|
- alloc側完全ヘッダレス化でper-op書込みを削減、Active2でbitmap走査/遠征を減少。
|
|||
|
|
- まだ中央経路(共有補充・trylock)側の残コストが支配するケースがあり、TC/adopt/Active2条件のさらなる調整が有効。
|
|||
|
|
|
|||
|
|
Next
|
|||
|
|
- A/B(cap8/16 × probes2/3 × drain_max32/64, trigger1–2)を固めてベスト固定→ head‑to‑head 保存。
|
|||
|
|
- P2: 空ページの即返還/遅延返還+スキャベンジでRSS最適。
|