Major Features: - Debug counter infrastructure for Refill Stage tracking - Free Pipeline counters (ss_local, ss_remote, tls_sll) - Diagnostic counters for early return analysis - Unified larson.sh benchmark runner with profiles - Phase 6-3 regression analysis documentation Bug Fixes: - Fix SuperSlab disabled by default (HAKMEM_TINY_USE_SUPERSLAB) - Fix profile variable naming consistency - Add .gitignore patterns for large files Performance: - Phase 6-3: 4.79 M ops/s (has OOM risk) - With SuperSlab: 3.13 M ops/s (+19% improvement) This is a clean repository without large log files. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2.2 KiB
2.2 KiB
Larson Tiny Contention: perf summary (2025-11-02)
Target: 8–128B, chunks=1024, rounds=1, seed=12345, duration=2s
- Binaries:
larson_system,larson_mi,larson_hakmem(直リンク; LD_PRELOAD不使用) - HAKMEM env:
HAKMEM_QUIET=1 HAKMEM_DISABLE_BATCH=1 HAKMEM_TINY_META_ALLOC=1 HAKMEM_TINY_META_FREE=1 - Scripts:
- Run:
scripts/run_larson.sh -d 2 -t 1,4 - Perf:
scripts/run_larson_perf.sh(出力:scripts/bench_results/larson_perf_*.txt)
- Run:
Throughput (ops/sec)
- 1T: system ~14.7M / mimalloc ~16.8M / HAKMEM ~2.4M
- 4T: system ~16.8M / mimalloc ~16.8M / HAKMEM ~4.2M
HAKMEMはMid/Large MTではmimallocを上回る一方、Tiny高競合(Larson)では大きく劣後。
perf stat highlights(4T, 2s)
出力: scripts/bench_results/larson_perf_{system,mimalloc,hakmem}_4T_2s_8-128.txt
-
HAKMEM
- page-faults: ~0.91M(13.1K/sec)
- IPC: ~0.92、branch-miss: ~7.5%、L1d-miss: ~4.4%
- user ~0.98s / sys ~3.81s(sysが支配的)
- 観測: SuperSlabの新規ページタッチ・ゼロ化が多い(PF・sys時間増)
-
mimalloc
- page-faults: ~0.087M(1.3K/sec)
- IPC: ~0.77、branch-miss: ~7.3%、L1d-miss: ~6.6%
-
system
- page-faults: ~0.078M(1.18K/sec)
- IPC: ~0.93、branch-miss: ~5.9%、L1d-miss: ~4.7%
perf report(HAKMEM, 4T)
サンプル上位はカーネル(ページフォールト処理系)とmemset。ユーザランド側はhak_free_at、hak_tiny_alloc{,_slow}などが小さく見えるのみ。
解釈・次の最適化
- Tiny高競合での主因は「再利用不足→ページタッチ/フォールト過多→sys時間増」。
- HAKMEMのfree/allocのマイクロコスト差より、メモリ側(PF/キャッシュ)のペナルティが支配的。
改善案(優先度)
- Tiny tcache(SLL, 32/64/128B, cap小): 即時返却/即時再利用でPF削減
- SuperSlab版ターゲットキュー: prefix pendingが閾値超でクラス別ワークキューに載せ、所有者不在でも排出を前進
- 併行: Mid registryシャーディング+read側lock-free、L25/Mid page-end prefix
再現手順
make larson_hakmem larson_system larson_mi
scripts/run_larson.sh -d 2 -t 1,4
scripts/run_larson_perf.sh