Commit Graph

8 Commits

Author SHA1 Message Date
ad852e5d5e Priority-2 ENV Cache: hakmem_batch.c (1変数追加、1箇所置換)
【追加ENV変数】
- HAKMEM_BATCH_BG (default: 0)

【置換ファイル】
- core/hakmem_batch.c (1箇所 → ENV Cache)

【変更詳細】
1. ENV Cache (hakmem_env_cache.h):
   - 構造体に1変数追加 (48→49変数)
   - hakmem_env_cache_init()に初期化追加
   - アクセサマクロ追加
   - カウント更新: 48→49

2. hakmem_batch.c:
   - batch_init():
     getenv("HAKMEM_BATCH_BG") → HAK_ENV_BATCH_BG()
   - #include "hakmem_env_cache.h" 追加

【効果】
- Batch初期化からgetenv()呼び出しを排除
- Cold pathだが、起動時のENV参照を削減

【テスト】
 make shared → 成功
 /tmp/test_mixed3_final → PASSED

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 20:58:25 +09:00
b741d61b46 Priority-2 ENV Cache: hakmem_debug.c (1変数追加、1箇所置換)
【追加ENV変数】
- HAKMEM_TIMING (default: 0)

【置換ファイル】
- core/hakmem_debug.c (1箇所 → ENV Cache)

【変更詳細】
1. ENV Cache (hakmem_env_cache.h):
   - 構造体に1変数追加 (47→48変数)
   - hakmem_env_cache_init()に初期化追加
   - アクセサマクロ追加
   - カウント更新: 47→48

2. hakmem_debug.c:
   - hkm_timing_init():
     getenv("HAKMEM_TIMING") + strcmp() → HAK_ENV_TIMING_ENABLED()
   - #include "hakmem_env_cache.h" 追加

【効果】
- デバッグタイミング初期化からgetenv()呼び出しを排除
- Cold pathだが、起動時のENV参照を削減

【テスト】
 make shared → 成功
 /tmp/test_mixed3_final → PASSED

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 20:56:55 +09:00
22a67e5cab Priority-2 ENV Cache: hakmem_smallmid.c (1変数追加、1箇所置換)
【追加ENV変数】
- HAKMEM_SMALLMID_ENABLE (default: 0)

【置換ファイル】
- core/hakmem_smallmid.c (1箇所 → ENV Cache)

【変更詳細】
1. ENV Cache (hakmem_env_cache.h):
   - 構造体に1変数追加 (46→47変数)
   - hakmem_env_cache_init()に初期化追加
   - アクセサマクロ追加
   - カウント更新: 46→47

2. hakmem_smallmid.c:
   - smallmid_is_enabled():
     getenv("HAKMEM_SMALLMID_ENABLE") → HAK_ENV_SMALLMID_ENABLE()
   - #include "hakmem_env_cache.h" 追加

【効果】
- SmallMid有効化チェックからgetenv()呼び出しを排除
- Warm path起動時のENV参照を1回に削減

【テスト】
 make shared → 成功
 /tmp/test_mixed3_final → PASSED

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 20:55:31 +09:00
c482722705 Priority-2 ENV Cache: Shared Pool Acquire (5変数追加、5箇所置換)
【追加ENV変数】
- HAKMEM_SS_EMPTY_REUSE (default: 1)
- HAKMEM_SS_EMPTY_SCAN_LIMIT (default: 32)
- HAKMEM_SS_ACQUIRE_DEBUG (default: 0)
- HAKMEM_TINY_TENSION_DRAIN_ENABLE (default: 1)
- HAKMEM_TINY_TENSION_DRAIN_THRESHOLD (default: 1024)

【置換ファイル】
- core/hakmem_shared_pool_acquire.c (5箇所 → ENV Cache)

【変更詳細】
1. ENV Cache (hakmem_env_cache.h):
   - 構造体に5変数追加 (41→46変数)
   - hakmem_env_cache_init()に初期化追加
   - アクセサマクロ5個追加
   - カウント更新: 41→46

2. hakmem_shared_pool_acquire.c:
   - getenv("HAKMEM_SS_EMPTY_REUSE") → HAK_ENV_SS_EMPTY_REUSE()
   - getenv("HAKMEM_SS_EMPTY_SCAN_LIMIT") → HAK_ENV_SS_EMPTY_SCAN_LIMIT()
   - getenv("HAKMEM_SS_ACQUIRE_DEBUG") → HAK_ENV_SS_ACQUIRE_DEBUG()
   - getenv("HAKMEM_TINY_TENSION_DRAIN_ENABLE") → HAK_ENV_TINY_TENSION_DRAIN_ENABLE()
   - getenv("HAKMEM_TINY_TENSION_DRAIN_THRESHOLD") → HAK_ENV_TINY_TENSION_DRAIN_THRESHOLD()
   - #include "hakmem_env_cache.h" 追加

【効果】
- Shared Pool Acquire warm pathからgetenv()呼び出しを完全排除
- Lock-free Stage2のgetenv()オーバーヘッド削減

【テスト】
 make shared → 成功
 /tmp/test_mixed3_final → PASSED

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 20:51:50 +09:00
b80b3d445e Priority-2: ENV Cache - SFC (Super Front Cache) getenv() 置換
変更内容:
- hakmem_env_cache.h: 4つの新ENV変数を追加
  (SFC_DEBUG, SFC_ENABLE, SFC_CAPACITY, SFC_REFILL_COUNT)
- hakmem_tiny_sfc.c: 4箇所の getenv() を置換
  (init時のdebug/enable/capacity/refill設定)
  ※Per-class動的変数(2箇所)は初期化時のみのため後回し

効果: SFC層からも syscall を排除 (ENV変数数: 37→41)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 20:32:22 +09:00
38ce143ddf Priority-2: ENV Cache - SuperSlab Registry/LRU/Prewarm getenv() 置換
変更内容:
- hakmem_env_cache.h: 7つの新ENV変数を追加
  (SUPER_REG_DEBUG, SUPERSLAB_MAX_CACHED, SUPERSLAB_MAX_MEMORY_MB,
   SUPERSLAB_TTL_SEC, SS_LRU_DEBUG, SS_PREWARM_DEBUG, PREWARM_SUPERSLABS)
- hakmem_super_registry.c: 11箇所の getenv() を置換
  (Registry debug, LRU config, LRU debug x3, Prewarm debug x2, Prewarm config)

効果: SuperSlab管理層からも syscall を排除 (ENV変数数: 30→37)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 20:30:29 +09:00
936dc365ba Priority-2: ENV Cache - Warm Path (FastCache/SuperSlab) getenv() 置換
変更内容:
- hakmem_env_cache.h: 2つの新ENV変数を追加
  (TINY_FAST_STATS, TINY_UNIFIED_CACHE)
- tiny_fastcache.c: 2箇所の getenv() を置換
  (TINY_PROFILE, TINY_FAST_STATS)
- tiny_fastcache.h: 1箇所の getenv() を置換
  (TINY_PROFILE in inline function)
- superslab_slab.c: 1箇所の getenv() を置換
  (TINY_SLL_DIAG)
- tiny_unified_cache.c: 1箇所の getenv() を置換
  (TINY_UNIFIED_CACHE)

効果: Warm path層からも syscall を排除 (ENV変数数: 28→30)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 20:25:48 +09:00
802b6e775f Priority-2: ENV Variable Cache - ホットパスから syscall を完全排除
実装内容:
- 新規 Box: core/hakmem_env_cache.h (28個のENV変数をキャッシュ)
- hakmem.c: グローバルインスタンス + constructor 追加
- tiny_alloc_fast.inc.h: 7箇所の getenv() → キャッシュアクセサに置換
- tiny_free_fast_v2.inc.h: 3箇所の getenv() → キャッシュアクセサに置換

パフォーマンス改善:
- ホットパス syscall: ~2000回/秒 → 0回/秒
- 削減コスト: 約20万+ CPUサイクル/秒

設計:
- __attribute__((constructor)) でライブラリロード時に一度だけ初期化
- ゼロコストマクロ (HAK_ENV_*) でキャッシュ値にアクセス
- 箱理論 (Box Pattern) に準拠: 単一責任、ステートレス

次のステップ: 残り約20箇所のgetenv()も順次置換予定

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 20:16:58 +09:00