Files
hakmem/docs/paper/ACE-Alloc/main.md

103 lines
5.5 KiB
Markdown
Raw Normal View History

% ACEAlloc: Agentic Context Engineering for RuntimeAdaptive SmallObject Allocation
% Authors: (TBD)
% Draft v0.1 — 20251102
概要Abstract
本論文は、Agentic Context EngineeringACEをメモリアロケータに適用し、実運用に耐える低オーバーヘッドの学習層を備えた小型オブジェクト向けアロケータ「ACEAlloc」を提案する。ACEAlloc は、観測軽量イベント、意思決定cap/refill/trim の動的制御)、適用(非同期スレッド)から成るエージェント型最適化ループを実装しつつ、ホットパスから観測負荷を排除する TLS バッチ化を採用する。また、標準 API 互換の free(ptr) を保ちながら perobject ヘッダを削除し、スラブ末尾の 32B prefix メタデータにより密度劣化なく即時判定を実現する。実験では、mimalloc と比較して Tiny/Mid における性能で優位性を示し、メモリ効率の差は Refillone、SLL 縮小、Idle Trim の ACE 制御により縮小可能であることを示す。
1. はじめにIntroduction
- 小型オブジェクトの高速割り当ては、多くのアプリケーションにとって主要な性能決定因子である。
- 既存の高速アロケータは、性能とメモリ効率のトレードオフに直面する。エージェント型の制御ACEにより、ワークロードに追従した動的最適化を可能にする。
- 本論文の貢献:
- ACEAgentic Context Engineeringをメモリアロケータに実装し、低オーバーヘッドで動作させる設計TLS バッチ化、非同期適用)。
- 標準 API に準拠しながら perobject ヘッダを排し、スラブ末尾 32B prefix で即時判定を実現する設計。
- 性能/メモリのスイートスポット探索Refillone、SLL 縮小、Idle Trim/Flushと評価。
2. 背景Background
- メモリアロケータの基礎小型クラス、TLS キャッシュ、スラブ/スーパー・スラブ)。
- mimalloc などの関連実装の要点(ページ記述子、低メタデータ、局所性)。
- Agentic Context EngineeringACEの要旨観測→意思決定→適用のエージェント型ループを、ホットパスを汚染せず実装する考え方。
3. 設計Design of ACEAlloc
- 目標:
- ホットパスの命令・分岐・メモリアクセスを最小化(ゼロに近い)。
- 標準 API 互換free(ptr))とメモリ密度の維持。
- 学習層は非同期・オフホットパスで適用。
- キー設計:
- TLS バッチ化alloc/free の観測カウンタは TLS に蓄積、しきい値到達時のみ atomic 反映)。
- 観測リング+背景ワーカー(イベントの集約とポリシ適用)。
- スラブ末尾 32B prefixpool/type/class/owner を格納)により perobject ヘッダを不要化。
- Refilloneミス時 1 個だけ補充)と SLL 縮小、Idle Trim/Flush のポリシ。
4. 実装Implementation
- 主要コンポーネント:
- Prefix メタデータ: `core/hakmem_tiny_superslab.h/c`
- TLS バッチACE メトリクス: `core/hakmem_ace_metrics.h/c`
- 観測・意思決定・適用INT エンジン): `core/hakmem_tiny_intel.inc`
- RefilloneSLL 縮小Idle Trim の適用箇所。
- 互換性と安全性:標準 API、LD_PRELOAD 環境での安全モード、Remote free の扱い(設計と今後の拡張)。
5. 評価Evaluation
- ベンチマークTiny Hot、Mid MT、Mixed本リポジトリ同梱
- 指標スループットM ops/sec、帯域、RSS/VmSize、断片化比オプション
- 比較mimalloc、システム malloc。
- アブレーション:
- ACE OFF 対比(学習層無効)。
- Refillone/SLL 縮小/Idle Trim の有無。
- Prefix メタ(ヘッダ無し) vs perobject ヘッダ(参考)。
6. 関連研究Related Work
- 既存アロケータmimalloc、jemalloc など)。
- 動的最適化・学習型手法(エージェントベースの最適化)。
7. 考察・限界Discussion & Limitations
- Idle Trim の即時 RSS への効き方(短時間測定 vs 長時間)。
- Remote free 多発時の設計トレードオフ(将来の安全なリモートキュー)。
- MT スケール時のスラブ粒度と ACE ポリシのチューニング。
8. 結論Conclusion
- ACEAlloc は、ホットパスのオーバーヘッドを極小化しつつ、学習層によって動的にメモリ効率と性能のスイートスポットを探索できる実装である。今後は、長時間の断片化評価と MT スケール最適化を進める。
付録 A. Artifact再現手順
- ビルド(メタデフォルト):
```sh
make bench_tiny_hot_hakmem
```
- Tiny性能:
```sh
./bench_tiny_hot_hakmem 64 100 60000
```
- Mixed性能:
```sh
./bench_random_mixed_hakmem 2000000 400 42
```
- メモリ重視モード(推奨プリセット):
```sh
HAKMEM_MEMORY_MODE=1 ./bench_tiny_hot_hakmem 64 1000 400000000
HAKMEM_MEMORY_MODE=1 ./bench_random_mixed_hakmem 2000000 400 42
```
- スイープ計測短時間のCSV出力:
```sh
scripts/sweep_mem_perf.sh both | tee sweep.csv
```
- 平均推移ログEMA:
```sh
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