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>
103 lines
5.5 KiB
Markdown
103 lines
5.5 KiB
Markdown
% 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 制御により縮小可能であることを示す。
|
||
|
||
1. はじめに(Introduction)
|
||
|
||
- 小型オブジェクトの高速割り当ては、多くのアプリケーションにとって主要な性能決定因子である。
|
||
- 既存の高速アロケータは、性能とメモリ効率のトレードオフに直面する。エージェント型の制御(ACE)により、ワークロードに追従した動的最適化を可能にする。
|
||
- 本論文の貢献:
|
||
- ACE(Agentic Context Engineering)をメモリアロケータに実装し、低オーバーヘッドで動作させる設計(TLS バッチ化、非同期適用)。
|
||
- 標準 API に準拠しながら per‑object ヘッダを排し、スラブ末尾 32B prefix で即時判定を実現する設計。
|
||
- 性能/メモリのスイートスポット探索(Refill‑one、SLL 縮小、Idle Trim/Flush)と評価。
|
||
|
||
2. 背景(Background)
|
||
|
||
- メモリアロケータの基礎(小型クラス、TLS キャッシュ、スラブ/スーパー・スラブ)。
|
||
- mimalloc などの関連実装の要点(ページ記述子、低メタデータ、局所性)。
|
||
- Agentic Context Engineering(ACE)の要旨:観測→意思決定→適用のエージェント型ループを、ホットパスを汚染せず実装する考え方。
|
||
|
||
3. 設計(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 のポリシ。
|
||
|
||
4. 実装(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 の適用箇所。
|
||
- 互換性と安全性:標準 API、LD_PRELOAD 環境での安全モード、Remote free の扱い(設計と今後の拡張)。
|
||
|
||
5. 評価(Evaluation)
|
||
|
||
- ベンチマーク:Tiny Hot、Mid MT、Mixed(本リポジトリ同梱)。
|
||
- 指標:スループット(M ops/sec)、帯域、RSS/VmSize、断片化比(オプション)。
|
||
- 比較:mimalloc、システム malloc。
|
||
- アブレーション:
|
||
- ACE OFF 対比(学習層無効)。
|
||
- Refill‑one/SLL 縮小/Idle Trim の有無。
|
||
- Prefix メタ(ヘッダ無し) vs per‑object ヘッダ(参考)。
|
||
|
||
6. 関連研究(Related Work)
|
||
|
||
- 既存アロケータ(mimalloc、jemalloc など)。
|
||
- 動的最適化・学習型手法(エージェントベースの最適化)。
|
||
|
||
7. 考察・限界(Discussion & Limitations)
|
||
|
||
- Idle Trim の即時 RSS への効き方(短時間測定 vs 長時間)。
|
||
- Remote free 多発時の設計トレードオフ(将来の安全なリモートキュー)。
|
||
- MT スケール時のスラブ粒度と ACE ポリシのチューニング。
|
||
|
||
8. 結論(Conclusion)
|
||
|
||
- ACE‑Alloc は、ホットパスのオーバーヘッドを極小化しつつ、学習層によって動的にメモリ効率と性能のスイートスポットを探索できる実装である。今後は、長時間の断片化評価と 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)
|
||
|