Document current Mixed baseline throughput and ENV profile

This commit is contained in:
Moe Charm (CI)
2025-12-10 14:12:13 +09:00
parent 406a2f4d26
commit d576116484
3 changed files with 44 additions and 13 deletions

View File

@ -1,4 +1,28 @@
## HAKMEM 状況メモ (2025-12-05 更新 / C7 Warm/TLS Bind 反映)
## 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
- ENV:
- プリセット: `HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFE`
- bench_profile により自動注入される値:
- `HAKMEM_TINY_HEAP_PROFILE=C7_SAFE`
- `HAKMEM_TINY_C7_HOT=1`
- `HAKMEM_TINY_HOTHEAP_V2=0`
- `HAKMEM_SMALL_HEAP_V3_ENABLED=1`
- `HAKMEM_SMALL_HEAP_V3_CLASSES=0x80`C7-only SmallObject v3
- `HAKMEM_POOL_V2_ENABLED=0`
- `HAKMEM_TINY_FRONT_V3_ENABLED=1`
- `HAKMEM_TINY_FRONT_V3_LUT_ENABLED=1`
- `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 済み)。
- メモ:
- 以前の 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 レンジに入っていることを確認する。
### 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。

View File

@ -4,6 +4,17 @@
**ベンチマーク**: `bench_random_mixed` (1M iterations, ws=400, seed=1)
**サイズ範囲**: 16-1024 bytes (Tiny allocator: 8 size classes)
## Quick Baseline Refresh (2025-12-10, current HEAD, C7-only v3 / front v3 ON)
**ENV (Release)**: `HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFE HAKMEM_BENCH_MIN_SIZE=16 HAKMEM_BENCH_MAX_SIZE=1024`
bench_profile により `TINY_HEAP_PROFILE=C7_SAFE TINY_C7_HOT=1 TINY_HOTHEAP_V2=0 SMALL_HEAP_V3_ENABLED=1 SMALL_HEAP_V3_CLASSES=0x80 POOL_V2_ENABLED=0 TINY_FRONT_V3_ENABLED=1 TINY_FRONT_V3_LUT_ENABLED=1 TINY_PTR_FAST_CLASSIFY_ENABLED=1` が自動注入される。FREE_POLICY/THP は未設定のまま)。
| Allocator | Throughput (ops/s) | 備考 |
|-----------|--------------------|------|
| HAKMEM (current HEAD, C7-only v3) | **35,771,829** | `Throughput = 35771829 ops/s [iter=1000000 ws=400]` |
> Note: 以前の PhaseS1 では同系統の構成で **44,447,714 ops/s** を記録していたが、その後の Tiny/front/pool/Superslab 側のリファクタリングと安全化により、現 HEAD では同条件でおおよそ 36M ops/s レンジに落ち着いている。以降の最適化はこの数値を新しい基準ラインとして扱う。
## Quick Baseline Refresh (2025-12-05, C7-only v3 / front v3 ON)
**ENV (Release)**: `HAKMEM_BENCH_MIN_SIZE=16 MAX_SIZE=1024 TINY_HEAP_PROFILE=C7_SAFE TINY_C7_HOT=1 TINY_HOTHEAP_V2=0 SMALL_HEAP_V3_ENABLED=1 SMALL_HEAP_V3_CLASSES=0x80 POOL_V2_ENABLED=0`front v3/LUT デフォルト ON, SMALL_HEAP_V3_STATS=1

View File

@ -14,19 +14,12 @@
### ENV 最小セットRelease
```sh
# プリセットでまとめて指定
HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFE
# Mixed 161024B 前提のサイズ範囲(必要に応じて明示)
HAKMEM_BENCH_MIN_SIZE=16
HAKMEM_BENCH_MAX_SIZE=1024
HAKMEM_TINY_HEAP_PROFILE=C7_SAFE
HAKMEM_TINY_C7_HOT=1
HAKMEM_TINY_HOTHEAP_V2=0
HAKMEM_SMALL_HEAP_V3_ENABLED=1
HAKMEM_SMALL_HEAP_V3_CLASSES=0x80
HAKMEM_POOL_V2_ENABLED=0
HAKMEM_TINY_FRONT_V3_ENABLED=1
HAKMEM_TINY_FRONT_V3_LUT_ENABLED=1
HAKMEM_TINY_PTR_FAST_CLASSIFY_ENABLED=1
HAKMEM_FREE_POLICY=batch
HAKMEM_THP=auto
```
### 任意オプション
@ -37,11 +30,14 @@ HAKMEM_TINY_HEAP_STATS_DUMP=1
HAKMEM_SMALL_HEAP_V3_STATS=1
```
- v2 系は触らないC7_SAFE では Pool v2 / Tiny v2 は常時 OFF
- vm.max_map_count が厳しい環境で Fail-Fast を避けたいときの応急処置(性能はほぼ同等〜微減:
- FREE_POLICY/THP を触る実験例(現在の HEAD では必須ではなく、組み合わせによっては微マイナスになる場合もある:
```sh
HAKMEM_FREE_POLICY=keep
HAKMEM_DISABLE_BATCH=1
HAKMEM_SS_MADVISE_STRICT=0
# or
HAKMEM_FREE_POLICY=batch
HAKMEM_THP=auto
```
---