Module: Datadog::Profiling
- Defined in:
- lib/datadog/profiling.rb,
lib/datadog/profiling/ext.rb,
lib/datadog/profiling/flush.rb,
lib/datadog/profiling/exporter.rb,
lib/datadog/profiling/profiler.rb,
lib/datadog/profiling/component.rb,
lib/datadog/profiling/scheduler.rb,
lib/datadog/profiling/tasks/exec.rb,
lib/datadog/profiling/tasks/help.rb,
lib/datadog/profiling/tag_builder.rb,
lib/datadog/profiling/tasks/setup.rb,
lib/datadog/profiling/http_transport.rb,
lib/datadog/profiling/stack_recorder.rb,
lib/datadog/profiling/collectors/info.rb,
lib/datadog/profiling/encoded_profile.rb,
lib/datadog/profiling/collectors/stack.rb,
lib/datadog/profiling/native_extension.rb,
lib/datadog/profiling/ext/dir_monkey_patches.rb,
lib/datadog/profiling/collectors/thread_context.rb,
lib/datadog/profiling/collectors/code_provenance.rb,
lib/datadog/profiling/collectors/idle_sampling_helper.rb,
lib/datadog/profiling/collectors/dynamic_sampling_rate.rb,
lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb,
ext/datadog_profiling_native_extension/profiling.c,
ext/datadog_profiling_native_extension/native_extension_helpers.rb
Overview
Defined Under Namespace
Modules: Collectors, Component, Ext, NativeExtension, NativeExtensionHelpers, TagBuilder, Tasks
Classes: EncodedProfile, Exporter, Flush, HttpTransport, Profiler, Scheduler, StackRecorder
Class Method Summary
collapse
Class Method Details
.enabled? ⇒ Boolean
63
64
65
66
67
|
# File 'lib/datadog/profiling.rb', line 63
def self.enabled?
profiler = Datadog.send(:components).profiler
!!profiler&.send(:scheduler)&.running?
end
|
.replace_noop_allocation_count ⇒ Object
80
81
82
83
84
85
86
87
|
# File 'lib/datadog/profiling.rb', line 80
def self.replace_noop_allocation_count
class << self
remove_method :allocation_count
def allocation_count
Datadog::Profiling::Collectors::CpuAndWallTimeWorker._native_allocation_count
end
end
end
|
.start_if_enabled ⇒ Boolean
Starts the profiler, if the profiler is supported by in this runtime environment and if the profiler has been enabled in configuration.
27
28
29
30
31
32
33
34
35
|
# File 'lib/datadog/profiling.rb', line 27
def self.start_if_enabled
profiler = Datadog.send(:components).profiler
profiler&.start
!!profiler
end
|
.supported? ⇒ Boolean
10
11
12
|
# File 'lib/datadog/profiling.rb', line 10
def self.supported?
unsupported_reason.nil?
end
|
.unsupported_reason ⇒ Object
14
15
16
17
18
19
|
# File 'lib/datadog/profiling.rb', line 14
def self.unsupported_reason
native_library_compilation_skipped? || native_library_failed_to_load?
end
|
.wait_until_running(timeout_seconds: 5) ⇒ Object
69
70
71
72
73
74
75
76
77
78
|
# File 'lib/datadog/profiling.rb', line 69
def self.wait_until_running(timeout_seconds: 5)
profiler = Datadog.send(:components).profiler
if profiler
worker = profiler.send(:worker)
worker.wait_until_running(timeout_seconds: timeout_seconds)
else
raise 'Profiler not enabled or available'
end
end
|