Files
hakmem/docs/analysis/PERF_ANALYSIS_MID_LARGE_PHASE53.md
2025-12-09 21:50:15 +09:00

36 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Phase53: Mid/Smallmid ベンチ簡易計測(シングルスレッド)
- 条件: 1 thread / cycles=1,000,000 / ws=400 / reps=1
- ビルド: `make bench_mid_large_mt_hakmem bench_mid_large_mt_mi bench_mid_large_mt_system -j4`
- プロファイル: TinyHotHeap v2 OFF、C7_SAFE プロファイル、LARSON_FIX=1、その他デフォルト
## スループット比較
- HAKMEM: `./bench_mid_large_mt_hakmem 1 1000000 400 1`**28.43M ops/s**(別 run perf 時 29.02M
- mimalloc: `./bench_mid_large_mt_mi 1 1000000 400 1`**54.22M ops/s**
- system malloc: `./bench_mid_large_mt_system 1 1000000 400 1`**15.29M ops/s**
## perf stat (HAKMEM, user+sys)
- コマンド: `perf stat -e cycles,instructions,task-clock,page-faults ./bench_mid_large_mt_hakmem 1 1000000 400 1`
- 結果:
- cycles: 211,394,722
- instructions: 513,342,673 (IPC ≈ 2.43)
- task-clock: 57.48 ms (user 33.29 ms / sys 25.22 ms)
- page-faults: 7,374
- スループット: 29.02M ops/s計測 run の値)
## 所感 / 次の判断材料
- mid/smallmid (257768B主体) では mimalloc が HAKMEM の約 1.9×。system はさらに低い。
- page-faults は 7.3k と Tiny (161024B) よりやや多めだが、主因は CPU 側命令量と sys 部分の比率。
- 次の選択肢:
- mid/smallmid パスTiny 以外)のホットパスを狙う箱
- もしくは Tiny 側での残り課題と比較して優先度を決める材料に。
## 2025-12-XX 追記: madvise(ENOMEM) を握りつぶすガードを追加
- Superslab OS Box に `ss_os_madvise_guarded()` を導入し、madvise(DONTNEED/POPULATE) が ENOMEMvm.max_map_countを返したら
`g_ss_madvise_disabled` を立てて以降の madvise をスキップ。EINVAL だけは STRICT=1 で Fail-Fast のまま。
- `[SS_OS_STATS]``madvise_enomem/madvise_other/madvise_disabled` を追加(`HAKMEM_SS_OS_STATS=1`)。
- 目的: ENOMEM 多発で VMA を増やし続けないようにしつつ、アロケータ本体は継続させる。