# Phase P2: Tiny の完全TLS化とリモートフリー改良 目的: Tiny(≤1KiB)の4Tスケールを改善し、ロック競合とリモートフリーの負債を削減。 ## 実装 - 完全TLSアリーナ(クラス別Active Slab) - `__thread TinySlab* g_tls_active_slab[TINY_NUM_CLASSES]` - alloc時は Magazine→ActiveSlab(所有スレ)→共有FreeList の順で探索 - ActiveSlab採用ロジックを強化(共有リスト先頭をTLSに引き抜き、以降はロックレス運用) - MPSCリモートフリーの閾値ドレイン - TinySlabに `atomic_uint remote_count` を追加し、push/drainで増減 - しきい値以上でオーナー側/クラスロック下でドレインを実施 - ランダム確率でドレイン試行(過剰ドレイン防止) - ラッパー時の安全リフィル(既存) - `HAKMEM_WRAP_TINY=1` 時は magazine-first + ActiveSlab ロックレス - `HAKMEM_WRAP_TINY_REFILL=1` で小規模trylockリフィルを許可 ## 環境変数 - `HAKMEM_TINY_REMOTE_DRAIN_THRESHOLD`(既定 32) - `HAKMEM_TINY_REMOTE_DRAIN_TRYRATE`(既定 16 → 1/16確率で試行) - `HAKMEM_TINY_MAG_CAP`(TLS magazine上限、既定2048/クラスによる) - `HAKMEM_WRAP_TINY` / `HAKMEM_WRAP_TINY_REFILL`(既定OFF) ## 初期結果(1秒, 簡易) - Tiny(8–64B) - 1T: ~18.6–20.1M ops/s - 4T: ~40.1–43.4M ops/s(+数% 改善) ## 次ステップ - 2秒→10秒に段階拡大して、ActiveSlabとドレインしきい値のA/B(4T中心) - WRAP_TINY(=1)の効果は条件依存のため既定OFFを維持(A/Bで限定的に使用)