Files
hakmem/docs/status/archive/P0_SOFT_CAP_2025_10_22.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

2.6 KiB
Raw Blame History

Phase P0: Soft CAP 実装・安全実行プリセット

目的: Mid/L2.5 のリフィル強度を FrozenPolicy の CAP で制御し、過剰補充とフォールバックを抑制。併せてベンチスクリプトに外部タイムアウトを導入し、長時間ハングを防止。

実装概要

  • Mid Pool (hakmem_pool.c)

    • Soft CAP 連動のバンドル制御を refill_freelist() に実装。
      • pol->mid_cap[*]pages_by_class[*] の差分で bundles を 1..4 に調整。
      • CAP 以上では bundles=1最小。CAP 未満では不足に応じて下限min bundleを確保。
    • CAP 超過時の簡易ステアル±1..4 シャード)で過剰リフィル回避。
  • L2.5 Large Pool (hakmem_l25_pool.c)

    • Soft CAP 連動の簡易バンドル1..2)を refill_freelist() に追加。
      • 既定は 1、CAP 未満で不足が大きい場合のみ 2 まで前補充。
      • CAP 超過時は 1 に固定。CAP 超でもアロケーションは枯渇させないソフトCAP
    • CAP 超過時は先に隣接シャードから 12 段ステアルを試行(hak_l25_pool_try_alloc)。

環境変数P0関連

  • HAKMEM_POOL_MIN_BUNDLEMid: 最小バンドル数(既定 2、推奨 A/B: 34
  • HAKMEM_L25_MIN_BUNDLEL2.5: 最小バンドル数(既定 1、範囲 1..2

ベンチスクリプトの安全化(外部タイムアウト)

  • scripts/run_bench_suite.sh
    • 既定 RUNTIME=1BENCH_TIMEOUT=RUNTIME+3KILL_GRACE=2
    • すべての実行を timeout -k でラップ
  • scripts/save_prof_sweep.sh: 同上(保存スイープ)
  • scripts/ab_sweep_mid.sh: 同上Mid A/B
  • 付属: scripts/kill_bench.sh検出→TERM→KILL

推奨プリセット(短時間)

  • 保存スイープ1s, 1/4T, sample=1/256
    • BENCH_TIMEOUT=6 scripts/save_prof_sweep.sh -d 1 -t 1,4 -s 8
  • Mid A/BWRAP L1=OFF, 学習OFF
    • RUNTIME=1 THREADS=1,4 BENCH_TIMEOUT=5 scripts/ab_sweep_mid.sh
  • 小スイートsystem/mimalloc/hakmem
    • RUNTIME=1 THREADS=1,4 BENCH_TIMEOUT=6 scripts/run_bench_suite.sh

現時点の観測1秒計測の例

  • Mid CAP 基本: 既定 64,64,64,32,16 が良好大CAPは競合・リフィル増で不利
  • DYN1=14,336B: CAP_MID_DYN1=64 が安定ワークロード依存、要A/B
  • 推奨: HAKMEM_POOL_MIN_BUNDLE=4 をA/Bで検証Mid 4Tが伸びる傾向

以降P1: Water-filling のヒステリシス/ドウェル、W_MAX/THP 閾値の Canary 採用を追加し、BEST 構成の安定化を図る。