diff --git a/CURRENT_TASK.md b/CURRENT_TASK.md index 5618d08a..bc66b64c 100644 --- a/CURRENT_TASK.md +++ b/CURRENT_TASK.md @@ -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) - ベンチ: `./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 16–1024B 前提。未設定時は既定値を使用) - その他: `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 baseline(C7 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 16–1024B 新基準」では同系統の構成で **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 なし・スループットが 35–38M ops/s レンジに入っていることを確認する。 + - 一時的に同プロファイルで ~36M ops/s まで落ち込んでいたが、Tiny front v3 snapshot の遅延・LUT 判定の整理・C7 ヘッダまわりの配置見直しにより、Mixed 16–1024B のスループットは **約 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 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。 @@ -992,3 +993,7 @@ export HAKMEM_POOL_ZERO_MODE=header - 内容: 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 は無し。 - 対応: 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)。 diff --git a/PERF_ANALYSIS_16_1024B_20251205.md b/PERF_ANALYSIS_16_1024B_20251205.md index 9ac4157d..1bd0dee9 100644 --- a/PERF_ANALYSIS_16_1024B_20251205.md +++ b/PERF_ANALYSIS_16_1024B_20251205.md @@ -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)