Files
hakmem/docs/paper/ACE-Alloc/main.md
Moe Charm (CI) 52386401b3 Debug Counters Implementation - Clean History
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>
2025-11-05 12:31:14 +09:00

103 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

% 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