Major Features: - Debug counter infrastructure for Refill Stage tracking - Free Pipeline counters (ss_local, ss_remote, tls_sll) - Diagnostic counters for early return analysis - Unified larson.sh benchmark runner with profiles - Phase 6-3 regression analysis documentation Bug Fixes: - Fix SuperSlab disabled by default (HAKMEM_TINY_USE_SUPERSLAB) - Fix profile variable naming consistency - Add .gitignore patterns for large files Performance: - Phase 6-3: 4.79 M ops/s (has OOM risk) - With SuperSlab: 3.13 M ops/s (+19% improvement) This is a clean repository without large log files. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
5.5 KiB
5.5 KiB
% ACE‑Alloc: Agentic Context Engineering for Runtime‑Adaptive Small‑Object Allocation % Authors: (TBD) % Draft v0.1 — 2025‑11‑02
概要(Abstract)
本論文は、Agentic Context Engineering(ACE)をメモリアロケータに適用し、実運用に耐える低オーバーヘッドの学習層を備えた小型オブジェクト向けアロケータ「ACE‑Alloc」を提案する。ACE‑Alloc は、観測(軽量イベント)、意思決定(cap/refill/trim の動的制御)、適用(非同期スレッド)から成るエージェント型最適化ループを実装しつつ、ホットパスから観測負荷を排除する TLS バッチ化を採用する。また、標準 API 互換の free(ptr) を保ちながら per‑object ヘッダを削除し、スラブ末尾の 32B prefix メタデータにより密度劣化なく即時判定を実現する。実験では、mimalloc と比較して Tiny/Mid における性能で優位性を示し、メモリ効率の差は Refill‑one、SLL 縮小、Idle Trim の ACE 制御により縮小可能であることを示す。
- はじめに(Introduction)
- 小型オブジェクトの高速割り当ては、多くのアプリケーションにとって主要な性能決定因子である。
- 既存の高速アロケータは、性能とメモリ効率のトレードオフに直面する。エージェント型の制御(ACE)により、ワークロードに追従した動的最適化を可能にする。
- 本論文の貢献:
- ACE(Agentic Context Engineering)をメモリアロケータに実装し、低オーバーヘッドで動作させる設計(TLS バッチ化、非同期適用)。
- 標準 API に準拠しながら per‑object ヘッダを排し、スラブ末尾 32B prefix で即時判定を実現する設計。
- 性能/メモリのスイートスポット探索(Refill‑one、SLL 縮小、Idle Trim/Flush)と評価。
- 背景(Background)
- メモリアロケータの基礎(小型クラス、TLS キャッシュ、スラブ/スーパー・スラブ)。
- mimalloc などの関連実装の要点(ページ記述子、低メタデータ、局所性)。
- Agentic Context Engineering(ACE)の要旨:観測→意思決定→適用のエージェント型ループを、ホットパスを汚染せず実装する考え方。
- 設計(Design of ACE‑Alloc)
- 目標:
- ホットパスの命令・分岐・メモリアクセスを最小化(ゼロに近い)。
- 標準 API 互換(free(ptr))とメモリ密度の維持。
- 学習層は非同期・オフホットパスで適用。
- キー設計:
- TLS バッチ化(alloc/free の観測カウンタは TLS に蓄積、しきい値到達時のみ atomic 反映)。
- 観測リング+背景ワーカー(イベントの集約とポリシ適用)。
- スラブ末尾 32B prefix(pool/type/class/owner を格納)により per‑object ヘッダを不要化。
- Refill‑one(ミス時 1 個だけ補充)と SLL 縮小、Idle Trim/Flush のポリシ。
- 実装(Implementation)
- 主要コンポーネント:
- Prefix メタデータ:
core/hakmem_tiny_superslab.h/c - TLS バッチ&ACE メトリクス:
core/hakmem_ace_metrics.h/c - 観測・意思決定・適用(INT エンジン):
core/hakmem_tiny_intel.inc - Refill‑one/SLL 縮小/Idle Trim の適用箇所。
- Prefix メタデータ:
- 互換性と安全性:標準 API、LD_PRELOAD 環境での安全モード、Remote free の扱い(設計と今後の拡張)。
- 評価(Evaluation)
- ベンチマーク:Tiny Hot、Mid MT、Mixed(本リポジトリ同梱)。
- 指標:スループット(M ops/sec)、帯域、RSS/VmSize、断片化比(オプション)。
- 比較:mimalloc、システム malloc。
- アブレーション:
- ACE OFF 対比(学習層無効)。
- Refill‑one/SLL 縮小/Idle Trim の有無。
- Prefix メタ(ヘッダ無し) vs per‑object ヘッダ(参考)。
- 関連研究(Related Work)
- 既存アロケータ(mimalloc、jemalloc など)。
- 動的最適化・学習型手法(エージェントベースの最適化)。
- 考察・限界(Discussion & Limitations)
- Idle Trim の即時 RSS への効き方(短時間測定 vs 長時間)。
- Remote free 多発時の設計トレードオフ(将来の安全なリモートキュー)。
- MT スケール時のスラブ粒度と ACE ポリシのチューニング。
- 結論(Conclusion)
- ACE‑Alloc は、ホットパスのオーバーヘッドを極小化しつつ、学習層によって動的にメモリ効率と性能のスイートスポットを探索できる実装である。今後は、長時間の断片化評価と MT スケール最適化を進める。
付録 A. Artifact(再現手順)
- ビルド(メタデフォルト):
make bench_tiny_hot_hakmem - Tiny(性能):
./bench_tiny_hot_hakmem 64 100 60000 - Mixed(性能):
./bench_random_mixed_hakmem 2000000 400 42 - メモリ重視モード(推奨プリセット):
HAKMEM_MEMORY_MODE=1 ./bench_tiny_hot_hakmem 64 1000 400000000 HAKMEM_MEMORY_MODE=1 ./bench_random_mixed_hakmem 2000000 400 42 - スイープ計測(短時間のCSV出力):
scripts/sweep_mem_perf.sh both | tee sweep.csv - 平均推移ログ(EMA):
HAKMEM_TINY_OBS=1 HAKMEM_TINY_OBS_LOG_AVG=1 HAKMEM_TINY_OBS_LOG_EVERY=2 HAKMEM_INT_ENGINE=1 \ ./bench_random_mixed_hakmem 2000000 400 42 2>&1 | less
謝辞(Acknowledgments)
(TBD)