Document new Mixed baseline and C7 header dedup A/B

This commit is contained in:
Moe Charm (CI)
2025-12-10 14:38:49 +09:00
parent d576116484
commit 677030d699
2 changed files with 15 additions and 9 deletions

View File

@ -1,4 +1,4 @@
## HAKMEM 状況メモ (2025-12-10 更新 / Mixed 基準ライン固定)
## HAKMEM 状況メモ (2025-12-10 更新 / Mixed 基準ライン固定)
### Phase S-FINAL: Mixed 161024B 現行ベースライン固定C7-only v3 / front v3+LUT+fast classify ON
- ベンチ: `./bench_random_mixed_hakmem 1000000 400 1`1 thread, ws=400, iters=1M, seed=1
@ -16,13 +16,14 @@
- `HAKMEM_TINY_PTR_FAST_CLASSIFY_ENABLED=1`
- サイズ範囲: `HAKMEM_BENCH_MIN_SIZE=16 HAKMEM_BENCH_MAX_SIZE=1024`Mixed 161024B 前提。未設定時は既定値を使用)
- その他: `HAKMEM_FREE_POLICY` / `HAKMEM_THP` / stats 系 ENV は未設定(デフォルトのまま)。
- 結果(現 HEAD, Release:
- HAKMEM: `Throughput = 35771829 ops/s [iter=1000000 ws=400] time=0.028s`(約 **35.8M ops/s**)。
- ログ: `/tmp/mixed_baseline.log`(ベンチ実行時の標準出力を tee 済み)。
- 結果(現 HEAD, Release, ユーザ環境での実測:
- HAKMEM baselineC7 header dedup OFF: **44,384,651 ops/s**
- HAKMEM + `HAKMEM_TINY_C7_HEADER_DEDUP_ENABLED=1`: **44,303,895 ops/s**(約 -0.2%、誤差レンジ内)
- メモ:
- 以前の PhaseS1/「Mixed 161024B 新基準」では同系統の構成で **44.45M ops/s** を記録していたが、その後のフロント/Tiny/Pool/Superslab 周りのリファクタリングと安全化madvise ガード・DSO ガード・DEBUG パス整備など)により、現 HEAD の同条件スループットは **約 36M ops/s** レンジに落ち着いている。
- 以降の最適化はこの Phase S-FINAL を基準ラインとして扱い、A/B は必ず `HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFE` 前提で比較する(過去の 44M ops/s とは直接比較しない)。
- Mixed の「健康診断 run」として、少なくとも `HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFE ./bench_random_mixed_hakmem 1000000 400 1` を 1 本通し、segv/assert なし・スループットが 3538M ops/s レンジに入っていることを確認する
- 一時的に同プロファイルで ~36M ops/s まで落ち込んでいたが、Tiny front v3 snapshot の遅延・LUT 判定の整理・C7 ヘッダまわりの配置見直しにより、Mixed 161024B のスループットは **約 44M ops/s レベル** に戻っている。
- C7 ヘッダ再書き込み抑制dedupは ON/OFF いずれもほぼ同等で、現状は安全な実験箱として ENV ゲート付きのまま維持(デフォルトは OFF)。
- 以降の最適化はこの Phase S-FINAL を基準ラインとして扱い、A/B は必ず `HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFE` 前提で比較する(過去の別プロファイル・別ビルドの数値とは直接比較しない)
- Mixed の「健康診断 run」として、少なくとも `HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFE ./bench_random_mixed_hakmem 1000000 400 1` を 1 本通し、segv/assert なし・スループットが 40〜45M ops/s 程度のレンジに入っていることを確認する(マシン差は許容)。
### Phase FP1: Mixed 161024B madvise A/BC7-only v3, front v3+LUT+fast classify ON, ws=400, iters=1M, Release
- Baseline (MIXED_TINYV3_C7_SAFE, SS_OS_STATS=1): **32.76M ops/s**`[SS_OS_STATS] madvise=4 madvise_enomem=1 madvise_disabled=1`warmup で ENOMEM→madvise 停止。perf: task-clock 50.88ms / minor-faults 6,742 / user 35.3ms / sys 16.2ms。
@ -992,3 +993,7 @@ export HAKMEM_POOL_ZERO_MODE=header
- 内容: tiny_alloc_gate_box を LUT/route 先頭分岐に寄せる再構成+ malloc_tiny_fast_dispatch の分離を試験。
- 結果: Mixed 161024B (MIXED_TINYV3_C7_SAFE, Release) で **約 -14%** (44.8M → 38.6M ops/s) の回帰。segv/assert は無し。
- 対応: Phase TG2 変更は破棄済みtiny_alloc_gate_box / malloc_tiny_fast を元の直線ロジックへ戻した)。今後は gate 全体を触らず、header / classify / ptr fast path など局所削減で攻める方針。
### Header Light v3.1C7 header 再書き込み抑制・ベンチ専用)
- ENV: `HAKMEM_TINY_C7_HEADER_DEDUP_ENABLED`(デフォルト 0, C7 v3 ON 時のみ効く)。直前と同一のヘッダなら store をスキップ、free 側の検証は不変。
- A/B (Mixed 161024B, ws=400, iters=1M, MIXED_TINYV3_C7_SAFE): OFF 44.38M ops/s, ON 44.30M ops/s±イズ, 回帰なし)。安全な実験箱として残す(デフォルト OFF

View File

@ -11,9 +11,10 @@
| Allocator | Throughput (ops/s) | 備考 |
|-----------|--------------------|------|
| HAKMEM (current HEAD, C7-only v3) | **35,771,829** | `Throughput = 35771829 ops/s [iter=1000000 ws=400]` |
| HAKMEM (current HEAD, C7-only v3, dedup OFF) | **44,384,651** | baseline (`HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFE`) |
| HAKMEM + C7 header dedup ON | **44,303,895** | `HAKMEM_TINY_C7_HEADER_DEDUP_ENABLED=1`(ほぼ誤差) |
> Note: 以前の PhaseS1 では同系統の構成で **44,447,714 ops/s** を記録していたが、その後の Tiny/front/pool/Superslab 側のリファクタリングと安全化により、現 HEAD では同条件でおおよそ 36M ops/s レンジに落ち着いている。以降の最適化はこの数値を新しい基準ラインとして扱う。
> Note: 一時的に同プロファイルで ~36M ops/s まで落ち込んでいたが、その後の Tiny front v3 snapshot の遅延・LUT 判定の整理・C7 ヘッダまわりの配置見直しにより、現 HEAD では同条件でおおよそ 44M ops/s レンジに戻っている。以降の最適化はこの数値を新しい Mixed 基準ラインとして扱う。
## Quick Baseline Refresh (2025-12-05, C7-only v3 / front v3 ON)