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

5.5 KiB
Raw Blame 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と評価。
  1. 背景Background
  • メモリアロケータの基礎小型クラス、TLS キャッシュ、スラブ/スーパー・スラブ)。
  • mimalloc などの関連実装の要点(ページ記述子、低メタデータ、局所性)。
  • Agentic Context EngineeringACEの要旨観測→意思決定→適用のエージェント型ループを、ホットパスを汚染せず実装する考え方。
  1. 設計Design of ACEAlloc
  • 目標:
    • ホットパスの命令・分岐・メモリアクセスを最小化(ゼロに近い)。
    • 標準 API 互換free(ptr))とメモリ密度の維持。
    • 学習層は非同期・オフホットパスで適用。
  • キー設計:
    • TLS バッチ化alloc/free の観測カウンタは TLS に蓄積、しきい値到達時のみ atomic 反映)。
    • 観測リング+背景ワーカー(イベントの集約とポリシ適用)。
    • スラブ末尾 32B prefixpool/type/class/owner を格納)により perobject ヘッダを不要化。
    • Refilloneミス時 1 個だけ補充)と SLL 縮小、Idle Trim/Flush のポリシ。
  1. 実装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 の扱い(設計と今後の拡張)。
  1. 評価Evaluation
  • ベンチマークTiny Hot、Mid MT、Mixed本リポジトリ同梱
  • 指標スループットM ops/sec、帯域、RSS/VmSize、断片化比オプション
  • 比較mimalloc、システム malloc。
  • アブレーション:
    • ACE OFF 対比(学習層無効)。
    • Refillone/SLL 縮小/Idle Trim の有無。
    • Prefix メタ(ヘッダ無し) vs perobject ヘッダ(参考)。
  1. 関連研究Related Work
  • 既存アロケータmimalloc、jemalloc など)。
  • 動的最適化・学習型手法(エージェントベースの最適化)。
  1. 考察・限界Discussion & Limitations
  • Idle Trim の即時 RSS への効き方(短時間測定 vs 長時間)。
  • Remote free 多発時の設計トレードオフ(将来の安全なリモートキュー)。
  • MT スケール時のスラブ粒度と ACE ポリシのチューニング。
  1. 結論Conclusion
  • ACEAlloc は、ホットパスのオーバーヘッドを極小化しつつ、学習層によって動的にメモリ効率と性能のスイートスポットを探索できる実装である。今後は、長時間の断片化評価と 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