Sha256: a99e9018322f90f64faf144404a8194b000e56ef6f44a1b437445c19567455e9
Contents?: true
Size: 1.87 KB
Versions: 4
Compression:
Stored size: 1.87 KB
Contents
module Instana module Collector class GC attr_accessor :payload_key def initialize @payload_key = :gc @last_report = {} @this_gc = {} @last_major_count = 0 @last_minor_count = 0 ::GC::Profiler.enable end ## # collect # # To collect garbage collector related metrics. # def collect @this_gc.clear stats = ::GC.stat # Time spent in GC. Report in milliseconds @this_gc[:totalTime] = ::GC::Profiler.total_time * 1000 ::GC::Profiler.clear # GC metrics only available on newer Ruby versions if RUBY_VERSION >= '2.1' # GC runs. Calculate how many have occurred since the last call @this_gc[:minorGcs] = stats[:minor_gc_count] - @last_minor_count @this_gc[:majorGcs] = stats[:major_gc_count] - @last_major_count # Store these counts so that we have something to compare to next # time around. @last_major_count = stats[:major_gc_count] @last_minor_count = stats[:minor_gc_count] end # GC Heap @this_gc[:heap_live] = stats[:heap_live_slot] || stats[:heap_live_slots] || stats[:heap_live_num] @this_gc[:heap_free] = stats[:heap_free_slot] || stats[:heap_free_slots] || stats[:heap_free_num] @this_gc = ::Instana::Util.enforce_deltas(@this_gc, @last_report) unless @this_gc.empty? @last_report.merge!(@this_gc) @this_gc else nil end rescue => e ::Instana.logger.error "#{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" ::Instana.logger.debug e.backtrace.join("\r\n") end end end end # Register the metrics collector if enabled if ::Instana.config[:metrics][:gc][:enabled] ::Instana.collectors << ::Instana::Collector::GC.new end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
instana-1.0.2 | lib/instana/collectors/gc.rb |
instana-1.0.1 | lib/instana/collectors/gc.rb |
instana-0.15.0 | lib/instana/collectors/gc.rb |
instana-0.14.2 | lib/instana/collectors/gc.rb |