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>
2.6 KiB
2.6 KiB
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 シャード)で過剰リフィル回避。
- Soft CAP 連動のバンドル制御を
-
L2.5 Large Pool (
hakmem_l25_pool.c)- Soft CAP 連動の簡易バンドル(1..2)を
refill_freelist()に追加。- 既定は
1、CAP 未満で不足が大きい場合のみ2まで前補充。 - CAP 超過時は
1に固定。CAP 超でもアロケーションは枯渇させない(ソフトCAP)。
- 既定は
- CAP 超過時は先に隣接シャードから 1–2 段ステアルを試行(
hak_l25_pool_try_alloc)。
- Soft CAP 連動の簡易バンドル(1..2)を
環境変数(P0関連)
HAKMEM_POOL_MIN_BUNDLE(Mid): 最小バンドル数(既定 2、推奨 A/B: 3–4)HAKMEM_L25_MIN_BUNDLE(L2.5): 最小バンドル数(既定 1、範囲 1..2)
ベンチスクリプトの安全化(外部タイムアウト)
scripts/run_bench_suite.sh- 既定
RUNTIME=1、BENCH_TIMEOUT=RUNTIME+3、KILL_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/B(WRAP 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 構成の安定化を図る。