Files
hakmem/docs/analysis/LEARNING_BENCHMARK_TASK.md

256 lines
6.3 KiB
Markdown
Raw Normal View History

# Learning System Benchmark Task
**目的**: PROFILES.md の数値を実測データで裏付ける
**提案者**: ChatGPT先生
**実測者**: Task先生この文書を元に計測
---
## ⚠️ **実測結果:学習機能が壊れています** ⚠️
**測定日**: 2025-11-26
**発見された重大バグ**:
1.`HAKMEM_ALLOC_LEARN=1` を有効化すると即座に SEGFAULT
2.`HAKMEM_MEM_LEARN=1` を有効化すると即座に SEGFAULT
3. ❌ Larson ベンチマーク: 学習OFFでも SEGFAULTTLS SLL corruption
**測定可能だった項目**:
- ✅ Baseline Random Mixed 256B: **83.19 M ops/s** (学習OFF)
**測定不可能だった項目**:
- ❌ Pattern 1 (Alloc Learning): SEGFAULT
- ❌ Pattern 2 (Memory Learning): SEGFAULT
- ❌ Pattern 3 (Both ON): SEGFAULT
- ❌ Larson 1T/8T: SEGFAULT (学習OFF含む全設定)
**結論**:
- PROFILES.md の学習関連の全ての数値は **検証不可能** です
- 学習機能の実装に重大なバグが存在します
- 修正後に再測定が必要です
**詳細レポート**: このタスクで生成されたレポートを参照
---
## 📊 検証パターン3パターン
### Pattern 1: Alloc Learning のみ ON
```bash
export HAKMEM_ALLOC_LEARN=1
export HAKMEM_ALLOC_LEARN_WINDOW=10000
export HAKMEM_ALLOC_LEARN_RATE=0.08
export HAKMEM_MEM_LEARN=0
export HAKMEM_SUPERSLAB_REUSE=1
export HAKMEM_SUPERSLAB_PREWARM=0
```
**期待**: 性能 ±3%以内、RSS -10~20%
---
### Pattern 2: Memory Learning のみ ON
```bash
export HAKMEM_ALLOC_LEARN=0
export HAKMEM_MEM_LEARN=1
export HAKMEM_MEM_LEARN_WINDOW=20000
export HAKMEM_MEM_LEARN_THRESHOLD=0.7
export HAKMEM_SUPERSLAB_REUSE=1
export HAKMEM_SUPERSLAB_PREWARM=0
```
**期待**: 性能 ±3%以内、RSS -10~30%
---
### Pattern 3: 両方 ON攻め
```bash
export HAKMEM_ALLOC_LEARN=1
export HAKMEM_ALLOC_LEARN_WINDOW=8000
export HAKMEM_ALLOC_LEARN_RATE=0.12
export HAKMEM_MEM_LEARN=1
export HAKMEM_MEM_LEARN_WINDOW=12000
export HAKMEM_MEM_LEARN_THRESHOLD=0.8
export HAKMEM_SUPERSLAB_REUSE=1
export HAKMEM_SUPERSLAB_PREWARM=0
```
**期待**: 性能 -0~5%、RSS -20~40%
---
## 🔧 ベンチマーク実行方法
### Baseline (学習 OFF - 現在のデフォルト)
```bash
# 学習機能を明示的に OFF
unset HAKMEM_ALLOC_LEARN
unset HAKMEM_MEM_LEARN
unset HAKMEM_ALLOC_LEARN_WINDOW
unset HAKMEM_ALLOC_LEARN_RATE
unset HAKMEM_MEM_LEARN_WINDOW
unset HAKMEM_MEM_LEARN_THRESHOLD
export HAKMEM_SUPERSLAB_REUSE=1
export HAKMEM_SUPERSLAB_PREWARM=0
# Random Mixed 256B (10M iterations)
./out/release/bench_random_mixed_hakmem 10000000 256 42
# Larson 1T (10秒)
./out/release/larson_hakmem 1 10 1 1000 100 10000 42
# Larson 8T (10秒)
./out/release/larson_hakmem 8 10 1 1000 100 10000 42
```
**記録項目**:
- Random Mixed: ops/s
- Larson 1T: ops/s
- Larson 8T: ops/s
- RSS: /proc/self/status の VmRSS開始時・終了時
---
### Pattern 1 測定
```bash
# Pattern 1 設定
export HAKMEM_ALLOC_LEARN=1
export HAKMEM_ALLOC_LEARN_WINDOW=10000
export HAKMEM_ALLOC_LEARN_RATE=0.08
export HAKMEM_MEM_LEARN=0
export HAKMEM_SUPERSLAB_REUSE=1
export HAKMEM_SUPERSLAB_PREWARM=0
# 同じベンチマーク3つ実行
./out/release/bench_random_mixed_hakmem 10000000 256 42
./out/release/larson_hakmem 1 10 1 1000 100 10000 42
./out/release/larson_hakmem 8 10 1 1000 100 10000 42
```
**記録項目**: 同上
---
### Pattern 2 測定
```bash
# Pattern 2 設定
export HAKMEM_ALLOC_LEARN=0
export HAKMEM_MEM_LEARN=1
export HAKMEM_MEM_LEARN_WINDOW=20000
export HAKMEM_MEM_LEARN_THRESHOLD=0.7
export HAKMEM_SUPERSLAB_REUSE=1
export HAKMEM_SUPERSLAB_PREWARM=0
# 同じベンチマーク3つ実行
./out/release/bench_random_mixed_hakmem 10000000 256 42
./out/release/larson_hakmem 1 10 1 1000 100 10000 42
./out/release/larson_hakmem 8 10 1 1000 100 10000 42
```
**記録項目**: 同上
---
### Pattern 3 測定
```bash
# Pattern 3 設定
export HAKMEM_ALLOC_LEARN=1
export HAKMEM_ALLOC_LEARN_WINDOW=8000
export HAKMEM_ALLOC_LEARN_RATE=0.12
export HAKMEM_MEM_LEARN=1
export HAKMEM_MEM_LEARN_WINDOW=12000
export HAKMEM_MEM_LEARN_THRESHOLD=0.8
export HAKMEM_SUPERSLAB_REUSE=1
export HAKMEM_SUPERSLAB_PREWARM=0
# 同じベンチマーク3つ実行
./out/release/bench_random_mixed_hakmem 10000000 256 42
./out/release/larson_hakmem 1 10 1 1000 100 10000 42
./out/release/larson_hakmem 8 10 1 1000 100 10000 42
```
**記録項目**: 同上
---
## 📋 結果フォーマット
各パターンについて以下を記録:
```
Pattern: [Baseline/Pattern1/Pattern2/Pattern3]
Random Mixed 256B (10M):
- ops/s: XXX.XX M ops/s
- RSS start: XXX MB
- RSS end: XXX MB
- RSS delta: +XXX MB
Larson 1T (10s):
- ops/s: XXX.XX M ops/s
- RSS start: XXX MB
- RSS end: XXX MB
- RSS delta: +XXX MB
Larson 8T (10s):
- ops/s: XXX.XX M ops/s
- RSS start: XXX MB
- RSS end: XXX MB
- RSS delta: +XXX MB
```
---
## 🎯 成功基準
### Pattern 1 (Alloc Learning のみ)
-**性能**: Random Mixed/Larson が Baseline 比 -3% 以内
-**RSS**: Baseline 比 -10% 以上削減
### Pattern 2 (Memory Learning のみ)
-**性能**: Random Mixed/Larson が Baseline 比 -3% 以内
-**RSS**: Baseline 比 -10% 以上削減
### Pattern 3 (両方 ON)
-**性能**: Random Mixed/Larson が Baseline 比 -5% 以内
-**RSS**: Baseline 比 -20% 以上削減
---
## 📊 期待される結果(仮説)
| Pattern | Random Mixed | Larson 1T | Larson 8T | RSS 削減 |
|---------|--------------|-----------|-----------|----------|
| Baseline | 107 M ops/s | 47.6 M ops/s | 48.2 M ops/s | 0% (基準) |
| Pattern 1 | 104-107 M ops/s | 46-48 M ops/s | 47-49 M ops/s | -10~20% |
| Pattern 2 | 104-107 M ops/s | 46-48 M ops/s | 47-49 M ops/s | -10~30% |
| Pattern 3 | 102-107 M ops/s | 45-48 M ops/s | 46-49 M ops/s | -20~40% |
**注**: これらは仮説値。実測で検証する。
---
## 🚀 Task先生への依頼
1. **ビルド確認**: `./build.sh bench_random_mixed_hakmem larson_hakmem`
2. **Baseline 測定**: 学習 OFF で3ベンチマーク実行
3. **Pattern 1-3 測定**: 各パターンで3ベンチマーク実行
4. **結果レポート**: 上記フォーマットで結果を報告
5. **PROFILES.md 更新**: 実測データで数値を差し替え
**所要時間**: 約 10-15分4パターン × 3ベンチマーク
---
**作成日**: 2025-11-26
**ChatGPT先生からの指摘**: 「数値に根拠がない」 → 実測で検証!