Files
hakmem/ANALYSIS_INDEX.md
Moe Charm (CI) 03ba62df4d Phase 23 Unified Cache + PageFaultTelemetry generalization: Mid/VM page-fault bottleneck identified
Summary:
- Phase 23 Unified Cache: +30% improvement (Random Mixed 256B: 18.18M → 23.68M ops/s)
- PageFaultTelemetry: Extended to generic buckets (C0-C7, MID, L25, SSM)
- Measurement-driven decision: Mid/VM page-faults (80-100K) >> Tiny (6K) → prioritize Mid/VM optimization

Phase 23 Changes:
1. Unified Cache implementation (core/front/tiny_unified_cache.{c,h})
   - Direct SuperSlab carve (TLS SLL bypass)
   - Self-contained pop-or-refill pattern
   - ENV: HAKMEM_TINY_UNIFIED_CACHE=1, HAKMEM_TINY_UNIFIED_C{0-7}=128

2. Fast path pruning (tiny_alloc_fast.inc.h, tiny_free_fast_v2.inc.h)
   - Unified ON → direct cache access (skip all intermediate layers)
   - Alloc: unified_cache_pop_or_refill() → immediate fail to slow
   - Free: unified_cache_push() → fallback to SLL only if full

PageFaultTelemetry Changes:
3. Generic bucket architecture (core/box/pagefault_telemetry_box.{c,h})
   - PF_BUCKET_{C0-C7, MID, L25, SSM} for domain-specific measurement
   - Integration: hak_pool_try_alloc(), l25_alloc_new_run(), shared_pool_allocate_superslab_unlocked()

4. Measurement results (Random Mixed 500K / 256B):
   - Tiny C2-C7: 2-33 pages, high reuse (64-3.8 touches/page)
   - SSM: 512 pages (initialization footprint)
   - MID/L25: 0 (unused in this workload)
   - Mid/Large VM benchmarks: 80-100K page-faults (13-16x higher than Tiny)

Ring Cache Enhancements:
5. Hot Ring Cache (core/front/tiny_ring_cache.{c,h})
   - ENV: HAKMEM_TINY_HOT_RING_ENABLE=1, HAKMEM_TINY_HOT_RING_C{0-7}=size
   - Conditional compilation cleanup

Documentation:
6. Analysis reports
   - RANDOM_MIXED_BOTTLENECK_ANALYSIS.md: Page-fault breakdown
   - RANDOM_MIXED_SUMMARY.md: Phase 23 summary
   - RING_CACHE_ACTIVATION_GUIDE.md: Ring cache usage
   - CURRENT_TASK.md: Updated with Phase 23 results and Phase 24 plan

Next Steps (Phase 24):
- Target: Mid/VM PageArena/HotSpanBox (page-fault reduction 80-100K → 30-40K)
- Tiny SSM optimization deferred (low ROI, ~6K page-faults already optimal)
- Expected improvement: +30-50% for Mid/Large workloads

Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 02:47:58 +09:00

5.6 KiB
Raw Blame History

Random Mixed ボトルネック分析 - 完全レポート

Analysis Date: 2025-11-16
Status: Complete & Implementation Ready
Priority: 🔴 HIGHEST
Expected Gain: +13-29% (19.4M → 22-25M ops/s)


ドキュメント一覧

1. RANDOM_MIXED_SUMMARY.md (推奨・最初に読む)

用途: エグゼクティブサマリー + 優先度付き推奨施策
対象: マネージャー、意思決定者
内容:

  • Cycles 分布(表形式)
  • FrontMetrics 現状
  • Class別プロファイル
  • 優先度付き候補A/B/C/D
  • 最終推奨1-4優先度順

読む時間: 5分
ファイル: /mnt/workdisk/public_share/hakmem/RANDOM_MIXED_SUMMARY.md


2. RANDOM_MIXED_BOTTLENECK_ANALYSIS.md (詳細分析)

用途: 深掘りボトルネック分析、技術的根拠の確認
対象: エンジニア、最適化担当者
内容:

  • Executive Summary
  • Cycles 分布分析(詳細)
  • FrontMetrics 状況確認
  • Class別パフォーマンスプロファイル
  • 次の一手候補の詳細分析A/B/C/D
  • 優先順位付け結論
  • 推奨施策(スクリプト付き)
  • 長期ロードマップ
  • 技術的根拠Fixed vs Mixed 比較、Refill Cost 見積もり)

読む時間: 15-20分
ファイル: /mnt/workdisk/public_share/hakmem/RANDOM_MIXED_BOTTLENECK_ANALYSIS.md


3. RING_CACHE_ACTIVATION_GUIDE.md (即実施ガイド)

用途: Ring Cache C4-C7 有効化の実施手順書
対象: 実装者
内容:

  • 概要(なぜ Ring Cache か)
  • Ring Cache アーキテクチャ解説
  • 実装状況確認方法
  • テスト実施手順Step 1-5
    • Baseline 測定
    • C2/C3 Ring テスト
    • C4-C7 Ring テスト(推奨) ← これを実施すること
    • Combined テスト
  • ENV変数リファレンス
  • トラブルシューティング
  • 成功基準
  • 次のステップ

読む時間: 10分
実施時間: 30分1時間
ファイル: /mnt/workdisk/public_share/hakmem/RING_CACHE_ACTIVATION_GUIDE.md


クイックスタート

最速で結果を見たい場合5分

# 1. このガイドを読む
cat /mnt/workdisk/public_share/hakmem/RING_CACHE_ACTIVATION_GUIDE.md

# 2. Baseline 測定
./out/release/bench_random_mixed_hakmem 500000 256 42

# 3. Ring Cache C4-C7 有効化してテスト
export HAKMEM_TINY_HOT_RING_ENABLE=1
export HAKMEM_TINY_HOT_RING_C4=128
export HAKMEM_TINY_HOT_RING_C5=128
export HAKMEM_TINY_HOT_RING_C6=64
export HAKMEM_TINY_HOT_RING_C7=64
./out/release/bench_random_mixed_hakmem 500000 256 42

# 期待結果: 19.4M → 22-25M ops/s (+13-29%)

ボトルネック要約

根本原因

Random Mixed が 23% で停滞している理由:

  1. Class切り替え多発:

    • Random Mixed は C2-C7 を均等に使用16B-1040B
    • 毎iteration ごとに異なるクラスを処理
    • TLS SLLper-classが複数classで頻繁に空になる
  2. 最適化カバレッジ不足:

    • C0-C3: HeapV2 で 88-99% ヒット率
    • C4-C7: 最適化なし Random Mixed の 50%
    • Ring Cache は実装済みだが デフォルト OFF
    • HeapV2 拡張試験で効果薄(+0.3%
  3. 支配的ボトルネック:

    • SuperSlab refill: 50-200 cycles/回
    • TLS SLL ポインタチェイス: 3 mem accesses
    • Metadata 走査: 32 slab iteration

解決策

Ring Cache C4-C7 有効化:

  • ポインタチェイス: 3 mem → 2 mem (-33%)
  • キャッシュミス削減(配列アクセス)
  • 既実装(有効化のみ)、低リスク
  • 期待: +13-29% (19.4M → 22-25M ops/s)

推奨実施順序

Phase 0: 理解

  1. RANDOM_MIXED_SUMMARY.md を読む5分
  2. なぜ C4-C7 が遅いかを理解

Phase 1: Baseline 測定

  1. RING_CACHE_ACTIVATION_GUIDE.md Step 1-2 を実施
  2. 現在の性能 (19.4M ops/s) を確認

Phase 2: Ring Cache 有効化テスト

  1. RING_CACHE_ACTIVATION_GUIDE.md Step 4 を実施
  2. C4-C7 Ring Cache を有効化
  3. 性能向上を測定(目標: 22-25M ops/s

Phase 3: 詳細分析(必要に応じて)

  1. RANDOM_MIXED_BOTTLENECK_ANALYSIS.md で深掘り
  2. FrontMetrics で Ring hit rate 確認
  3. 次の最適化への道筋を検討

予想される性能向上パス

Now:           19.4M ops/s (23.4% of system)
                ↓
Phase 21-1 (Ring C4/C7): 22-25M ops/s (25-28%) ← これを実施
                ↓
Phase 21-2 (Hot Slab):   25-30M ops/s (28-33%)
                ↓
Phase 21-3 (Minimal Meta): 28-35M ops/s (31-39%)
                ↓
Phase 12 (Shared SS Pool): 70-90M ops/s (70-90%) 🎯

関連ファイル

実装ファイル

  • /mnt/workdisk/public_share/hakmem/core/front/tiny_ring_cache.h - Ring Cache header
  • /mnt/workdisk/public_share/hakmem/core/front/tiny_ring_cache.c - Ring Cache impl
  • /mnt/workdisk/public_share/hakmem/core/tiny_alloc_fast.inc.h - Alloc fast path
  • /mnt/workdisk/public_share/hakmem/core/box/tls_sll_box.h - TLS SLL API

参考ドキュメント

  • /mnt/workdisk/public_share/hakmem/CURRENT_TASK.md - Phase 21-22 計画
  • /mnt/workdisk/public_share/hakmem/bench_random_mixed.c - ベンチマーク実装

チェックリスト

  • RANDOM_MIXED_SUMMARY.md を読む
  • RING_CACHE_ACTIVATION_GUIDE.md を読む
  • Baseline を測定 (19.4M ops/s 確認)
  • Ring Cache C4-C7 を有効化
  • テスト実施 (22-25M ops/s 目標)
  • 結果が目標値を達成したら ✓ 成功!
  • 詳細分析が必要ならば RANDOM_MIXED_BOTTLENECK_ANALYSIS.md を参照
  • Phase 21-2 計画に進む

準備完了。実施をお待ちしています。