[gc] Measure Boehm GC time correctly.
authorMark Probst <mark.probst@gmail.com>
Wed, 13 Aug 2014 19:51:46 +0000 (12:51 -0700)
committerMark Probst <mark.probst@gmail.com>
Wed, 13 Aug 2014 20:00:04 +0000 (13:00 -0700)
mono/metadata/boehm-gc.c
mono/metadata/gc-internal.h
mono/metadata/gc.c
mono/metadata/sgen-gc.c

index af9eff4780f5f1010bce7bb812fc7d90fa5061f1..3320820f87797e0583a2fe745a242e1f1a700b8f 100644 (file)
@@ -455,7 +455,7 @@ on_gc_notification (GCEventType event)
                        mono_perfcounters->gc_gen0size = heap_size;
                }
 #endif
-               gc_stats.major_gc_time_usecs += (mono_100ns_ticks () - gc_start_time) / 10;
+               gc_stats.major_gc_time += mono_100ns_ticks () - gc_start_time;
                mono_trace_message (MONO_TRACE_GC, "gc took %d usecs", (mono_100ns_ticks () - gc_start_time) / 10);
                break;
        }
index 55ee713cbf26cf1614751d4f5d728c3f37b694b7..f2e59acb8443d5aa8f78679d1017c47a8b9bf7aa 100644 (file)
@@ -19,8 +19,8 @@
 typedef struct {
        int minor_gc_count;
        int major_gc_count;
-       long long minor_gc_time_usecs;
-       long long major_gc_time_usecs;
+       long long minor_gc_time;
+       long long major_gc_time;
 #ifdef HEAVY_STATISTICS
        unsigned long long gray_queue_section_alloc;
        unsigned long long gray_queue_section_free;
index 5a6af22abf1591b422a511e69cf8ac39bd06d40f..03b182b99f4da6d4cbcc8640ce56e7c9032054e5 100644 (file)
@@ -1152,8 +1152,8 @@ mono_gc_init (void)
        mono_counters_register ("Created object count", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &mono_stats.new_object_count);
        mono_counters_register ("Minor GC collections", MONO_COUNTER_GC | MONO_COUNTER_INT, &gc_stats.minor_gc_count);
        mono_counters_register ("Major GC collections", MONO_COUNTER_GC | MONO_COUNTER_INT, &gc_stats.major_gc_count);
-       mono_counters_register ("Minor GC time", MONO_COUNTER_GC | MONO_COUNTER_LONG | MONO_COUNTER_TIME, &gc_stats.minor_gc_time_usecs);
-       mono_counters_register ("Major GC time", MONO_COUNTER_GC | MONO_COUNTER_LONG | MONO_COUNTER_TIME, &gc_stats.major_gc_time_usecs);
+       mono_counters_register ("Minor GC time", MONO_COUNTER_GC | MONO_COUNTER_LONG | MONO_COUNTER_TIME, &gc_stats.minor_gc_time);
+       mono_counters_register ("Major GC time", MONO_COUNTER_GC | MONO_COUNTER_LONG | MONO_COUNTER_TIME, &gc_stats.major_gc_time);
 #ifdef HEAVY_STATISTICS
        mono_counters_register ("Gray Queue alloc section", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &gc_stats.gray_queue_section_alloc);
        mono_counters_register ("Gray Queue free section", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &gc_stats.gray_queue_section_free);
index e3b65fdbf3a58e1922e3bd4097ae04dcb276026e..c38703639175c4acb7a53d21034039b5c1bcf2a0 100644 (file)
@@ -2406,7 +2406,7 @@ collect_nursery (SgenGrayQueue *unpin_queue, gboolean finish_up_concurrent_mark)
        major_collector.finish_nursery_collection ();
 
        TV_GETTIME (all_btv);
-       gc_stats.minor_gc_time_usecs += TV_ELAPSED (all_atv, all_btv);
+       gc_stats.minor_gc_time += TV_ELAPSED (all_atv, all_btv);
 
        if (heap_dump_file)
                dump_heap ("minor", gc_stats.minor_gc_count - 1, NULL);
@@ -2975,7 +2975,7 @@ major_do_collection (const char *reason)
        major_finish_collection (reason, old_next_pin_slot, FALSE);
 
        TV_GETTIME (all_btv);
-       gc_stats.major_gc_time_usecs += TV_ELAPSED (all_atv, all_btv);
+       gc_stats.major_gc_time += TV_ELAPSED (all_atv, all_btv);
 
        /* FIXME: also report this to the user, preferably in gc-end. */
        if (major_collector.get_and_reset_num_major_objects_marked)