Skip to content

Commit bcf7c86

Browse files
committed
Add stats per major GC reason
1 parent cdb9d74 commit bcf7c86

1 file changed

Lines changed: 27 additions & 0 deletions

File tree

gc/default/default.c

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -624,6 +624,11 @@ typedef struct rb_objspace {
624624
size_t major_gc_count;
625625
size_t compact_count;
626626
size_t read_barrier_faults;
627+
size_t major_by_nofree;
628+
size_t major_by_oldgen;
629+
size_t major_by_shady;
630+
size_t major_by_force;
631+
size_t major_by_oldmalloc;
627632
#if RGENGC_PROFILE > 0
628633
size_t total_generated_normal_object_count;
629634
size_t total_generated_shady_object_count;
@@ -7906,6 +7911,13 @@ gc_start(rb_objspace_t *objspace, unsigned int reason)
79067911
(void)RB_DEBUG_COUNTER_INC_IF(gc_major_force, reason & GPR_FLAG_MAJOR_BY_FORCE);
79077912
#if RGENGC_ESTIMATE_OLDMALLOC
79087913
(void)RB_DEBUG_COUNTER_INC_IF(gc_major_oldmalloc, reason & GPR_FLAG_MAJOR_BY_OLDMALLOC);
7914+
#endif
7915+
if (reason & GPR_FLAG_MAJOR_BY_NOFREE) objspace->profile.major_by_nofree++;
7916+
if (reason & GPR_FLAG_MAJOR_BY_OLDGEN) objspace->profile.major_by_oldgen++;
7917+
if (reason & GPR_FLAG_MAJOR_BY_SHADY) objspace->profile.major_by_shady++;
7918+
if (reason & GPR_FLAG_MAJOR_BY_FORCE) objspace->profile.major_by_force++;
7919+
#if RGENGC_ESTIMATE_OLDMALLOC
7920+
if (reason & GPR_FLAG_MAJOR_BY_OLDMALLOC) objspace->profile.major_by_oldmalloc++;
79097921
#endif
79107922
}
79117923
else {
@@ -8986,6 +8998,11 @@ enum gc_stat_sym {
89868998
gc_stat_sym_remembered_wb_unprotected_objects_limit,
89878999
gc_stat_sym_old_objects,
89889000
gc_stat_sym_old_objects_limit,
9001+
gc_stat_sym_major_by_nofree,
9002+
gc_stat_sym_major_by_oldgen,
9003+
gc_stat_sym_major_by_shady,
9004+
gc_stat_sym_major_by_force,
9005+
gc_stat_sym_major_by_oldmalloc,
89899006
#if RGENGC_ESTIMATE_OLDMALLOC
89909007
gc_stat_sym_oldmalloc_increase_bytes,
89919008
gc_stat_sym_oldmalloc_increase_bytes_limit,
@@ -9036,6 +9053,11 @@ setup_gc_stat_symbols(void)
90369053
S(remembered_wb_unprotected_objects_limit);
90379054
S(old_objects);
90389055
S(old_objects_limit);
9056+
S(major_by_nofree);
9057+
S(major_by_oldgen);
9058+
S(major_by_shady);
9059+
S(major_by_force);
9060+
S(major_by_oldmalloc);
90399061
#if RGENGC_ESTIMATE_OLDMALLOC
90409062
S(oldmalloc_increase_bytes);
90419063
S(oldmalloc_increase_bytes_limit);
@@ -9117,6 +9139,11 @@ rb_gc_impl_stat(void *objspace_ptr, VALUE hash_or_sym)
91179139
SET(remembered_wb_unprotected_objects_limit, objspace->rgengc.uncollectible_wb_unprotected_objects_limit);
91189140
SET(old_objects, objspace->rgengc.old_objects);
91199141
SET(old_objects_limit, objspace->rgengc.old_objects_limit);
9142+
SET(major_by_nofree, objspace->profile.major_by_nofree);
9143+
SET(major_by_oldgen, objspace->profile.major_by_oldgen);
9144+
SET(major_by_shady, objspace->profile.major_by_shady);
9145+
SET(major_by_force, objspace->profile.major_by_force);
9146+
SET(major_by_oldmalloc, objspace->profile.major_by_oldmalloc);
91209147
#if RGENGC_ESTIMATE_OLDMALLOC
91219148
SET(oldmalloc_increase_bytes, (size_t)(objspace->malloc_counters.oldmalloc_increase > 0 ? objspace->malloc_counters.oldmalloc_increase : 0));
91229149
SET(oldmalloc_increase_bytes_limit, objspace->rgengc.oldmalloc_increase_limit);

0 commit comments

Comments
 (0)