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