80 lines
2.2 KiB
Markdown
80 lines
2.2 KiB
Markdown
|
|
# Phase 52: Tail Latency Proxy(epoch throughput quantiles)
|
|||
|
|
|
|||
|
|
目的: 「alloc/free の tail」を **コード変更なし**で近似し、SSOT 化する。
|
|||
|
|
方針: 単一プロセス soak の **短い epoch** を大量に取り、epoch throughput の分布(p50/p90/p99/p999)で tail を proxy する。
|
|||
|
|
|
|||
|
|
理由:
|
|||
|
|
- 1-op latency histogram を入れると測定オーバーヘッドが大きい
|
|||
|
|
- 既に epoch 出力(`[EPOCH] ... Throughput ... rss_kb=...`)があるので、低コストで tail proxy が取れる
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Step 0: Build
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
make bench_random_mixed_hakmem_minimal
|
|||
|
|
make bench_random_mixed_system
|
|||
|
|
make bench_random_mixed_mi
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Step 1: Single-process epoch soak(5分、epoch=1秒)
|
|||
|
|
|
|||
|
|
hakmem FAST:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
BENCH_BIN=./bench_random_mixed_hakmem_minimal \
|
|||
|
|
DURATION_SEC=300 EPOCH_SEC=1 WS=400 \
|
|||
|
|
scripts/soak_mixed_single_process.sh > tail_epoch_hakmem_fast_5m.csv
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
mimalloc / system:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
BENCH_BIN=./bench_random_mixed_mi \
|
|||
|
|
DURATION_SEC=300 EPOCH_SEC=1 WS=400 \
|
|||
|
|
scripts/soak_mixed_single_process.sh > tail_epoch_mimalloc_5m.csv
|
|||
|
|
|
|||
|
|
BENCH_BIN=./bench_random_mixed_system \
|
|||
|
|
DURATION_SEC=300 EPOCH_SEC=1 WS=400 \
|
|||
|
|
scripts/soak_mixed_single_process.sh > tail_epoch_system_5m.csv
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
注意:
|
|||
|
|
- `EPOCH_SEC=1` で ~300 サンプル(p99 近傍が見える)
|
|||
|
|
- さらに tail を見たい場合は `DURATION_SEC=1800`(30分)で ~1800 サンプル
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Step 2: 集計(p50/p90/p99/p999)
|
|||
|
|
|
|||
|
|
CSV から分位を計算する。
|
|||
|
|
|
|||
|
|
重要:
|
|||
|
|
- **throughput の tail は “低い側”**(p1/p0.1)で見る(p99 は “速い側”)
|
|||
|
|
- **latency percentiles は per-epoch latency を作ってから計算**する(`p99(latency) ≠ 1/p99(throughput)`)
|
|||
|
|
|
|||
|
|
推奨(正しい計算):
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
python3 scripts/analyze_epoch_tail_csv.py tail_epoch_hakmem_fast_5m.csv
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
推奨:
|
|||
|
|
- p50/p90/p99 は 5分で十分
|
|||
|
|
- p999 は 30分以上推奨(サンプル数が足りない)
|
|||
|
|
|
|||
|
|
(分析スクリプトがある場合はそれを使用。なければ簡易 awk/python を追加する Phase 52-1 で行う)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Step 3: SSOT 更新
|
|||
|
|
|
|||
|
|
更新先:
|
|||
|
|
- `docs/analysis/PERFORMANCE_TARGETS_SCORECARD.md`
|
|||
|
|
|
|||
|
|
追記:
|
|||
|
|
- tail proxy(p99 epoch throughput / p99 latency proxy)
|
|||
|
|
- どの条件(FAST/WS/epoch_sec/duration)で測ったか
|