Document current Mixed baseline throughput and ENV profile
This commit is contained in:
@ -1,4 +1,28 @@
|
|||||||
## HAKMEM 状況メモ (2025-12-05 更新 / C7 Warm/TLS Bind 反映)
|
## 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)。
|
||||||
|
- 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 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 済み)。
|
||||||
|
- メモ:
|
||||||
|
- 以前の 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 レンジに入っていることを確認する。
|
||||||
|
|
||||||
### 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。
|
||||||
|
|||||||
@ -4,6 +4,17 @@
|
|||||||
**ベンチマーク**: `bench_random_mixed` (1M iterations, ws=400, seed=1)
|
**ベンチマーク**: `bench_random_mixed` (1M iterations, ws=400, seed=1)
|
||||||
**サイズ範囲**: 16-1024 bytes (Tiny allocator: 8 size classes)
|
**サイズ範囲**: 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)
|
## 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)。
|
**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)。
|
||||||
|
|||||||
@ -14,19 +14,12 @@
|
|||||||
|
|
||||||
### ENV 最小セット(Release)
|
### ENV 最小セット(Release)
|
||||||
```sh
|
```sh
|
||||||
|
# プリセットでまとめて指定
|
||||||
|
HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFE
|
||||||
|
|
||||||
|
# Mixed 16–1024B 前提のサイズ範囲(必要に応じて明示)
|
||||||
HAKMEM_BENCH_MIN_SIZE=16
|
HAKMEM_BENCH_MIN_SIZE=16
|
||||||
HAKMEM_BENCH_MAX_SIZE=1024
|
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
|
HAKMEM_SMALL_HEAP_V3_STATS=1
|
||||||
```
|
```
|
||||||
- v2 系は触らない(C7_SAFE では Pool v2 / Tiny v2 は常時 OFF)。
|
- v2 系は触らない(C7_SAFE では Pool v2 / Tiny v2 は常時 OFF)。
|
||||||
- vm.max_map_count が厳しい環境で Fail-Fast を避けたいときの応急処置(性能はほぼ同等〜微減):
|
- FREE_POLICY/THP を触る実験例(現在の HEAD では必須ではなく、組み合わせによっては微マイナスになる場合もある):
|
||||||
```sh
|
```sh
|
||||||
HAKMEM_FREE_POLICY=keep
|
HAKMEM_FREE_POLICY=keep
|
||||||
HAKMEM_DISABLE_BATCH=1
|
HAKMEM_DISABLE_BATCH=1
|
||||||
HAKMEM_SS_MADVISE_STRICT=0
|
HAKMEM_SS_MADVISE_STRICT=0
|
||||||
|
# or
|
||||||
|
HAKMEM_FREE_POLICY=batch
|
||||||
|
HAKMEM_THP=auto
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
Reference in New Issue
Block a user