# ROADMAP(SACS‑3 版) このロードマップは「速度 × メモリ効率」を両立させつつ mimalloc に追い付くための最短手順です。 ホットパスはサイズのみで層決定(Tiny ≤1KiB, Mid 1–32KiB, Large/Big ≥64KiB〜)し、 最適化は Mid 層の内部整地(CAP/束数/TC/リング/閾値)に限定します。 ## P0(直近, 速度ブースト) - Mid ヘッダレス化(安全) - ページ記述子(64KiB → {class_idx, owner_tid}) で free の class/owner を逆引き - hak_free_at でヘッダ読取前に Mid 判定→ pool free 直行(HDR_LIGHT=2 でも安全) - 受け入れ条件: Mid 4T BURST で +10% 以上, 退行なし - Transfer Cache(TC)最適化 - `HAKMEM_TC_DRAIN_MAX={32,64,128}` × `POOL_TLS_RING_CAP={8,16}` × `HAKMEM_TRYLOCK_PROBES={2,3}` をA/B - 受け入れ条件: Mid 4T BURST +15% 以上(基準: 現在のベスト) ## P1(速度 × メモリ効率の両立) - Mid:TLS Active Page “2枚化” + adopt 改善 - 共有補充ページの初回タッチで所有者付与→ TC ヒット率上昇 - 2枚運用でbitmap走査/往復を更に減らす - Tiny/Mid:カウンタ完全サンプリング化(既定 1/256, 必要なら 1/512) - 受け入れ条件: p99 揺れ縮小, RSS 増加なし ## P2(メモリ効率強化) - 空ページ即返還・遅延返還の切替 - 完全空は munmap, 部分は MADV_FREE + バッチ閾値 - 閑散時スキャベンジ(低優先スレッド)で RSS を抑制 - NUMA ローカル供給(可能なら) - Mid/L2.5/ページ補充を node local 指向で p99 と TLB 効率を向上 ## P3(偏り最適化 / 仕上げ) - Site Top‑K micro‑pool((site,class)専用の小スラブ×2 私有) - 偏りの強いワークロード(larson系)で TC を超えて効かせる - ACE:学習は裏方に徹底(凍結ポリシーの更新のみ) - CAP/束数/W_MAX/TC 予算/リング/閾値を調律、ホットパスは“読むだけ” ## ベンチ計画・判定基準 - 10秒, larson(BURST/LOOP), 1T/4T - 比較: system, mimalloc, hakmem(環境変数は summary に保存) - 目標値(近傍の目安) - Tiny 4T: mimalloc ±10% 圏内(達成済シナリオあり) - Mid 4T: mimalloc の 80% 以上 → 100% 超えを目指す(P0〜P1 で詰める) - 保存: `docs/benchmarks/<日時>_HEAD2HEAD*/summary.txt` ## スクリプト - 小スイート: `RUNTIME=10 THREADS=1,4 scripts/run_bench_suite.sh` - Mid fast A/B: `RUNTIME=10 THREADS=1,4 PROBES=2,3 RETURNS=2,3 scripts/ab_fast_mid.sh` - Head‑to‑head: docs/benchmarks/README.md の例を参照