Add stage stats dump toggle for shared pool

This commit is contained in:
Moe Charm (CI)
2025-11-30 12:33:11 +09:00
parent eee8c7f14b
commit 96c93ea587

View File

@ -523,6 +523,28 @@ static SharedSSMeta* sp_meta_find_or_create(SuperSlab* ss) {
// Phase 12-1.x: Acquire Helper Boxes (Stage 0.5/1/2/3) // Phase 12-1.x: Acquire Helper Boxes (Stage 0.5/1/2/3)
// ============================================================================ // ============================================================================
// Debug / stats helper (Stage hits)
static inline void sp_stage_stats_dump_if_enabled(void) {
#if !HAKMEM_BUILD_RELEASE
static int dump_en = -1;
if (__builtin_expect(dump_en == -1, 0)) {
const char* e = getenv("HAKMEM_SHARED_POOL_STAGE_STATS");
dump_en = (e && *e && *e != '0') ? 1 : 0;
}
if (!dump_en) return;
// 代表として class0 のカウンタを出す(全クラス合計が欲しければ別途集計)
fprintf(stderr,
"[SP_STAGE_STATS] c0: stage0.5=%u stage1=%u stage2=%u stage3=%u\n",
(unsigned)atomic_load_explicit(&g_sp_stage0_hits[0], memory_order_relaxed),
(unsigned)atomic_load_explicit(&g_sp_stage1_hits[0], memory_order_relaxed),
(unsigned)atomic_load_explicit(&g_sp_stage2_hits[0], memory_order_relaxed),
(unsigned)atomic_load_explicit(&g_sp_stage3_hits[0], memory_order_relaxed));
#else
(void)g_sp_stage0_hits; (void)g_sp_stage1_hits; (void)g_sp_stage2_hits; (void)g_sp_stage3_hits;
#endif
}
// Stage 0.5: EMPTY slab direct scanregistry ベースの EMPTY 再利用) // Stage 0.5: EMPTY slab direct scanregistry ベースの EMPTY 再利用)
static inline int static inline int
sp_acquire_from_empty_scan(int class_idx, SuperSlab** ss_out, int* slab_idx_out, int dbg_acquire) sp_acquire_from_empty_scan(int class_idx, SuperSlab** ss_out, int* slab_idx_out, int dbg_acquire)