45 lines
2.6 KiB
Markdown
45 lines
2.6 KiB
Markdown
|
|
# 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 超過時は先に隣接シャードから 1–2 段ステアルを試行(`hak_l25_pool_try_alloc`)。
|
|||
|
|
|
|||
|
|
## 環境変数(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 構成の安定化を図る。
|
|||
|
|
|