19 lines
1.3 KiB
Markdown
19 lines
1.3 KiB
Markdown
|
|
# C6-heavy Hotpath 分析 (Phase47, v2 OFF)
|
|||
|
|
|
|||
|
|
- プロファイル: `HAKMEM_BENCH_MIN_SIZE=257 HAKMEM_BENCH_MAX_SIZE=768 HAKMEM_TINY_HEAP_PROFILE=C7_SAFE HAKMEM_TINY_C7_HOT=1 HAKMEM_TINY_HOTHEAP_V2=0 HAKMEM_TINY_LARSON_FIX=1`
|
|||
|
|
- ベンチ:
|
|||
|
|
- `./bench_random_mixed_hakmem 20000 256 1` → `Throughput = 39,457,304 ops/s`
|
|||
|
|
- FRONT_CLASS: cls6 alloc/free=5373、cls7 alloc=5692 free=4573
|
|||
|
|
- perf stat (cycles,instructions,task-clock,branch-misses):
|
|||
|
|
- `./bench_random_mixed_hakmem 1000000 400 1`
|
|||
|
|
- cycles=175,790,796 / instructions=368,496,560 (IPC≈2.10)
|
|||
|
|
- task-clock=42.36 ms (user 27.26 ms / sys 16.13 ms), branch-misses=2,206,657
|
|||
|
|
- perf record (cycles, 1M, ws=400):
|
|||
|
|
- 上位は匿名ページフォルト経路が支配的(`__memset_avx2_unaligned_erms` → `handle_mm_fault` → `do_anonymous_page` → `alloc_anon_folio` 系で包含 60%+)。
|
|||
|
|
- ユーザランド側では `free`/`malloc` が目立つが、カーネル first-touch が主因。
|
|||
|
|
|
|||
|
|
## 次に削る箱(候補)
|
|||
|
|
- 最重: first-touch/ゼロイング由来の匿名ページフォルト
|
|||
|
|
- 候補策: class6 向けの温存ページ再利用 / prefault を増やし、ベンチの 1M/400 で pf/sys をさらに削る。
|
|||
|
|
- Tiny v1 自体の命令数は二次的(perf で目立たず)。C6 を TinyHeap に載せるよりも、先に pf 削減箱を検討するのが妥当。
|