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

190 lines
5.6 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.

# 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分
```bash
# 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 計画に進む
---
**準備完了。実施をお待ちしています。**