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>
256 lines
6.3 KiB
Markdown
256 lines
6.3 KiB
Markdown
# 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でも SEGFAULT(TLS 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先生からの指摘**: 「数値に根拠がない」 → 実測で検証!
|