module OneApm::Collector::StatsEngine::GCProfiler
Constants
- GCSnapshot
- OA_GC_OTHER
- OA_GC_ROLLUP
- OA_GC_WEB
Public Class Methods
gc_metric_name()
click to toggle source
# File lib/one_apm/collector/stats_engine/gc_profiler.rb, line 57 def self.gc_metric_name if OneApm::Transaction.recording_web_transaction? OA_GC_WEB else OA_GC_OTHER end end
init()
click to toggle source
# File lib/one_apm/collector/stats_engine/gc_profiler.rb, line 9 def self.init return @profiler if @initialized @profiler = if RailsBenchProfiler.enabled? RailsBenchProfiler.new elsif CoreGCProfiler.enabled? CoreGCProfiler.new end @initialized = true @profiler end
record_delta(start_snapshot, end_snapshot)
click to toggle source
# File lib/one_apm/collector/stats_engine/gc_profiler.rb, line 34 def self.record_delta(start_snapshot, end_snapshot) if @profiler && start_snapshot && end_snapshot elapsed_gc_time_s = end_snapshot.gc_time_s - start_snapshot.gc_time_s num_calls = end_snapshot.gc_call_count - start_snapshot.gc_call_count record_gc_metric(num_calls, elapsed_gc_time_s) @profiler.reset elapsed_gc_time_s end end
record_gc_metric(call_count, elapsed)
click to toggle source
# File lib/one_apm/collector/stats_engine/gc_profiler.rb, line 45 def self.record_gc_metric(call_count, elapsed) OneApm::Manager.agent.stats_engine.tl_record_scoped_and_unscoped_metrics(gc_metric_name, OA_GC_ROLLUP) do |stats| stats.call_count += call_count stats.total_call_time += elapsed stats.total_exclusive_time += elapsed end end
reset()
click to toggle source
# File lib/one_apm/collector/stats_engine/gc_profiler.rb, line 20 def self.reset @profiler = nil @initialized = nil end
take_snapshot()
click to toggle source
# File lib/one_apm/collector/stats_engine/gc_profiler.rb, line 25 def self.take_snapshot init if @profiler GCSnapshot.new(@profiler.call_time_s, @profiler.call_count) else nil end end