module NewRelic::Agent::StatsEngine::GCProfiler
Constants
- GCSnapshot
- GC_OTHER
- GC_ROLLUP
- GC_WEB
Public Class Methods
Source
# File lib/new_relic/agent/stats_engine/gc_profiler.rb, line 59 def self.gc_metric_name if NewRelic::Agent::Transaction.recording_web_transaction? GC_WEB else GC_OTHER end end
Source
# File lib/new_relic/agent/stats_engine/gc_profiler.rb, line 11 def self.init @initialized ||= nil return @profiler if @initialized @profiler = if RailsBenchProfiler.enabled? RailsBenchProfiler.new elsif CoreGCProfiler.enabled? CoreGCProfiler.new end @initialized = true @profiler end
Source
# File lib/new_relic/agent/stats_engine/gc_profiler.rb, line 36 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
Source
# File lib/new_relic/agent/stats_engine/gc_profiler.rb, line 47 def self.record_gc_metric(call_count, elapsed) # THREAD_LOCAL_ACCESS NewRelic::Agent.agent.stats_engine.tl_record_scoped_and_unscoped_metrics(gc_metric_name, GC_ROLLUP) do |stats| stats.call_count += call_count stats.total_call_time += elapsed stats.total_exclusive_time += elapsed end end
Source
# File lib/new_relic/agent/stats_engine/gc_profiler.rb, line 24 def self.reset @profiler = nil @initialized = nil end
Source
# File lib/new_relic/agent/stats_engine/gc_profiler.rb, line 29 def self.take_snapshot init if @profiler GCSnapshot.new(@profiler.call_time_s, @profiler.call_count) end end