diff --git a/core/hakmem_shared_pool.c b/core/hakmem_shared_pool.c index c193f640..0e802ff9 100644 --- a/core/hakmem_shared_pool.c +++ b/core/hakmem_shared_pool.c @@ -533,13 +533,16 @@ static inline void sp_stage_stats_dump_if_enabled(void) { } 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)); + // 全クラス合計を出力(スキャン/ヒットの分布を見るため) + uint64_t s0 = 0, s1 = 0, s2 = 0, s3 = 0; + for (int c = 0; c < TINY_NUM_CLASSES_SS; c++) { + s0 += atomic_load_explicit(&g_sp_stage0_hits[c], memory_order_relaxed); + s1 += atomic_load_explicit(&g_sp_stage1_hits[c], memory_order_relaxed); + s2 += atomic_load_explicit(&g_sp_stage2_hits[c], memory_order_relaxed); + s3 += atomic_load_explicit(&g_sp_stage3_hits[c], memory_order_relaxed); + } + fprintf(stderr, "[SP_STAGE_STATS] total: stage0.5=%lu stage1=%lu stage2=%lu stage3=%lu\n", + (unsigned long)s0, (unsigned long)s1, (unsigned long)s2, (unsigned long)s3); #else (void)g_sp_stage0_hits; (void)g_sp_stage1_hits; (void)g_sp_stage2_hits; (void)g_sp_stage3_hits; #endif