Files
hakmem/docs/analysis/LEARNING_BENCHMARK_TASK.md
Moe Charm (CI) a9ddb52ad4 ENV cleanup: Remove BG/HotMag vars & guard fprintf (Larson 52.3M ops/s)
Phase 1 完了:環境変数整理 + fprintf デバッグガード

ENV変数削除(BG/HotMag系):
- core/hakmem_tiny_init.inc: HotMag ENV 削除 (~131 lines)
- core/hakmem_tiny_bg_spill.c: BG spill ENV 削除
- core/tiny_refill.h: BG remote 固定値化
- core/hakmem_tiny_slow.inc: BG refs 削除

fprintf Debug Guards (#if !HAKMEM_BUILD_RELEASE):
- core/hakmem_shared_pool.c: Lock stats (~18 fprintf)
- core/page_arena.c: Init/Shutdown/Stats (~27 fprintf)
- core/hakmem.c: SIGSEGV init message

ドキュメント整理:
- 328 markdown files 削除(旧レポート・重複docs)

性能確認:
- Larson: 52.35M ops/s (前回52.8M、安定動作)
- ENV整理による機能影響なし
- Debug出力は一部残存(次phase で対応)

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 14:45:26 +09:00

256 lines
6.3 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.

# 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先生からの指摘**: 「数値に根拠がない」 → 実測で検証!