96 lines
2.9 KiB
Markdown
96 lines
2.9 KiB
Markdown
|
|
# Phase 48: Rebase(mimalloc/system/jemalloc)+ Stability Suite
|
|||
|
|
|
|||
|
|
目的: Phase 39 以降で **FAST baseline が大きく動いた**ため、`docs/analysis/PERFORMANCE_TARGETS_SCORECARD.md` の参照値(mimalloc/system/jemalloc/libc)を **同一条件で再計測**して更新する。あわせて「速さ以外の勝ち筋」(syscall/RSS/長時間安定性)の **測定ルーチン**を固定する。
|
|||
|
|
|
|||
|
|
方針(Box Theory):
|
|||
|
|
- **測定は clean env** を正とする: `scripts/run_mixed_10_cleanenv.sh`
|
|||
|
|
- **比較は FAST build を正**(Standard/OBSERVE は別目的)
|
|||
|
|
- **link-out / 物理削除はしない**(layout tax で符号反転するため)。compile-out で運用する。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Step 0: 準備(ビルド)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
make bench_random_mixed_hakmem_minimal
|
|||
|
|
make bench_random_mixed_system
|
|||
|
|
make bench_random_mixed_mi
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
(任意)jemalloc がある場合のみ:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
ls -la /lib/x86_64-linux-gnu/libjemalloc.so.2
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Step 1: Mixed 10-run rebase(同一スクリプトで回す)
|
|||
|
|
|
|||
|
|
### 1-A) hakmem FAST(正)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
BENCH_BIN=./bench_random_mixed_hakmem_minimal scripts/run_mixed_10_cleanenv.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 1-B) system malloc(別バイナリ reference)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
BENCH_BIN=./bench_random_mixed_system scripts/run_mixed_10_cleanenv.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 1-C) mimalloc(別バイナリ reference)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
BENCH_BIN=./bench_random_mixed_mi scripts/run_mixed_10_cleanenv.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 1-D) jemalloc(LD_PRELOAD reference、任意)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
LD_PRELOAD=/lib/x86_64-linux-gnu/libjemalloc.so.2 \
|
|||
|
|
BENCH_BIN=./bench_random_mixed_system scripts/run_mixed_10_cleanenv.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
更新先(SSOT):
|
|||
|
|
- `docs/analysis/PERFORMANCE_TARGETS_SCORECARD.md` の `Current snapshot` と `Reference allocators`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Step 2: Syscall budget(steady-state OS churn)
|
|||
|
|
|
|||
|
|
目的: warmup 後に `mmap/munmap/madvise` が暴れていないことを確認する(mimallocに対する勝ち筋の1つ)。
|
|||
|
|
|
|||
|
|
内部カウンタ(推奨、短時間):
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
HAKMEM_SS_OS_STATS=1 BENCH_BIN=./bench_random_mixed_hakmem_minimal \
|
|||
|
|
ITERS=200000000 WS=400 RUNS=1 scripts/run_mixed_10_cleanenv.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
チェック:
|
|||
|
|
- `[SS_OS_STATS] ... mmap_total=... madvise=... madvise_disabled=...`
|
|||
|
|
- 目標: warmup 後に **増え続けない** / “極端に多くない”
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Step 3: RSS/長時間安定性(soak)
|
|||
|
|
|
|||
|
|
目的: 「速さ以外の勝ち筋」を数値化する(RSS drift / ops/s drift / CV)。
|
|||
|
|
|
|||
|
|
推奨(30–60分、FAST build):
|
|||
|
|
- RSS drift: **+5% 以内**(目安)
|
|||
|
|
- ops/s drift: **-5% 以上落ちない**
|
|||
|
|
- CV: **~1–2%** を維持
|
|||
|
|
|
|||
|
|
実施方法:
|
|||
|
|
- まずは `docs/analysis/PERFORMANCE_TARGETS_SCORECARD.md` の `Memory stability / Long-run stability` を SSOT とし、測定テンプレを追記する(スクリプト化は別PhaseでOK)。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 判定
|
|||
|
|
|
|||
|
|
- Phase 48 は「最適化」ではなく「**基準の固定**」が目的。
|
|||
|
|
- GO/NO-GO は無し(測定結果をスコアカードへ反映して完了)。
|
|||
|
|
|