Module: NewRelic::Agent::StatsEngine::GCProfiler
- Defined in:
- lib/new_relic/agent/stats_engine/gc_profiler.rb
Defined Under Namespace
Classes: CoreGCProfiler, GCSnapshot, RailsBenchProfiler
Constant Summary
collapse
- GC_ROLLUP =
'GC/Transaction/all'.freeze
- GC_OTHER =
'GC/Transaction/allOther'.freeze
- GC_WEB =
'GC/Transaction/allWeb'.freeze
Class Method Summary
collapse
Class Method Details
.record_delta(start_snapshot, end_snapshot) ⇒ Object
36
37
38
39
40
41
42
43
44
45
|
# 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
|
.record_gc_metric(call_count, elapsed) ⇒ Object
47
48
49
50
51
52
53
|
# File 'lib/new_relic/agent/stats_engine/gc_profiler.rb', line 47
def self.record_gc_metric(call_count, elapsed) 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
|
.reset ⇒ Object
24
25
26
27
|
# File 'lib/new_relic/agent/stats_engine/gc_profiler.rb', line 24
def self.reset
@profiler = nil
@initialized = nil
end
|
.take_snapshot ⇒ Object
29
30
31
32
33
34
|
# 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
|