// hakmem_phase7_config.h - Phase 7 定数・パラメータ集約ヘッダー // Purpose: Phase 7の重要な定数(数値・閾値)を一箇所に集約(忘れないように!) // Usage: Phase 7のコードから include される // // 注意: コンパイル時フラグ(ON/OFF)は hakmem_build_flags.h で定義 // このファイルは数値定数・パラメータのみ! #ifndef HAKMEM_PHASE7_CONFIG_H #define HAKMEM_PHASE7_CONFIG_H #include "hakmem_build_flags.h" // Phase 7 フラグを取得 // ======================================== // 【重要】フラグと定数の役割分担 // ======================================== // // hakmem_build_flags.h (既存): // - コンパイル時 ON/OFF フラグ // - HAKMEM_TINY_HEADER_CLASSIDX (Task 1) // - HAKMEM_TINY_AGGRESSIVE_INLINE (Task 2) // - HAKMEM_TINY_PREWARM_TLS (Task 3) // - HAKMEM_TINY_REFILL_DEFAULT (16) // // hakmem_phase7_config.h (このファイル): // - Phase 7 専用の数値定数・閾値 // - 性能目標値 // - チューニングパラメータ // - ドキュメント・使い方 // ======================================== // ======================================== // Phase 7 重要定数(チューニングパラメータ) // ======================================== // Refill count 範囲(hakmem_build_flags.h で HAKMEM_TINY_REFILL_DEFAULT=16 が定義済み) // 環境変数 HAKMEM_TINY_REFILL_COUNT で上書き可能 #ifndef HAKMEM_TINY_REFILL_MIN # define HAKMEM_TINY_REFILL_MIN 8 #endif #ifndef HAKMEM_TINY_REFILL_MAX # define HAKMEM_TINY_REFILL_MAX 256 #endif // TLS cache capacity デフォルト値 // 小さすぎる: 頻繁な refill → 遅い // 大きすぎる: メモリ浪費、cache miss 増加 #ifndef HAKMEM_TINY_TLS_CAP_DEFAULT # define HAKMEM_TINY_TLS_CAP_DEFAULT 64 #endif // Pre-warm count (Task 3) // 初期化時に各クラスに何個のブロックを事前割り当てするか #ifndef HAKMEM_TINY_PREWARM_COUNT # define HAKMEM_TINY_PREWARM_COUNT 16 #endif // ======================================== // Phase 7 Header Magic (Task 1) // ======================================== // Note: これらの定数は tiny_region_id.h でも定義されています // ここは参照・ドキュメント用です // Header format: 1 byte before each block // Bits 0-3: class_idx (0-15, only 0-7 used for Tiny) // Bits 4-7: magic (0xA for validation) // 実装: core/tiny_region_id.h:36-37 を参照 // ======================================== // Phase 7 Performance Targets // ======================================== // Target: 40-55% of System malloc (27-37M ops/s on typical hardware) // Current baseline: 21M ops/s (31% of System) // After Tasks 1-5: 27-37M ops/s (40-55% of System) ← 目標! #ifndef HAKMEM_PHASE7_TARGET_MIN_PERCENT # define HAKMEM_PHASE7_TARGET_MIN_PERCENT 40 // 最低目標: 40% of System #endif #ifndef HAKMEM_PHASE7_TARGET_MAX_PERCENT # define HAKMEM_PHASE7_TARGET_MAX_PERCENT 55 // 最高目標: 55% of System #endif // ======================================== // Phase 7 環境変数リスト(ドキュメント用) // ======================================== // Runtime tunable via environment variables: // // HAKMEM_TINY_REFILL_COUNT= 全クラスの refill count // HAKMEM_TINY_REFILL_COUNT_HOT= class 0-3 の refill count // HAKMEM_TINY_REFILL_COUNT_MID= class 4-7 の refill count // HAKMEM_TINY_REFILL_COUNT_C0= class 0 の refill count (個別設定) // HAKMEM_TINY_REFILL_COUNT_C1= class 1 の refill count // ... (C2-C7も同様) // // HAKMEM_TINY_TLS_CAP= TLS cache capacity (default: 64) // HAKMEM_TINY_PREWARM=<0|1> Pre-warm TLS cache at init // HAKMEM_TINY_PROFILE=<0|1> Enable profiling counters // // Example: // HAKMEM_TINY_REFILL_COUNT=32 ./bench_random_mixed_hakmem 100000 128 1234567 // ======================================== // Phase 7 ステータス(2025-11-08 現在) // ======================================== // Task 1: ✅ COMPLETE (Skip magic validation in release) // Task 2: ✅ COMPLETE (Aggressive inline TLS macros) // Task 3: 🔄 IN PROGRESS (Pre-warm + refill simplification) // Task 4: ⏳ PENDING (PGO) // Task 5: ⏳ PENDING (Full validation) // Task 6: ✅ COMPLETE (このファイル!) // ======================================== // 使い方(忘れないように!) // ======================================== // 1. 開発中(デバッグ): // make clean && make bench_random_mixed_hakmem larson_hakmem // // 2. Phase 7 最適化テスト: // make phase7-bench // // 3. Phase 7 完全ビルド: // make HEADER_CLASSIDX=1 AGGRESSIVE_INLINE=1 PREWARM_TLS=1 // bench_random_mixed_hakmem larson_hakmem // // 4. PGO ビルド (Task 4): // make PROFILE_GEN=1 bench_random_mixed_hakmem // ./bench_random_mixed_hakmem 100000 128 1234567 # プロファイル収集 // make clean // make PROFILE_USE=1 HEADER_CLASSIDX=1 AGGRESSIVE_INLINE=1 // bench_random_mixed_hakmem #endif // HAKMEM_PHASE7_CONFIG_H