Class: OneApm::Collector::Samplers::CpuSampler
- Inherits:
-
OneApm::Collector::Sampler
- Object
- OneApm::Collector::Sampler
- OneApm::Collector::Samplers::CpuSampler
- Defined in:
- lib/one_apm/collector/samplers/cpu_sampler.rb
Instance Attribute Summary collapse
-
#last_time ⇒ Object
readonly
Returns the value of attribute last_time.
Attributes inherited from OneApm::Collector::Sampler
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize ⇒ CpuSampler
constructor
A new instance of CpuSampler.
- #poll ⇒ Object
- #set_poller(poller) ⇒ Object
Methods inherited from OneApm::Collector::Sampler
enabled?, inherited, name, named, sampler_classes
Constructor Details
#initialize ⇒ CpuSampler
Returns a new instance of CpuSampler.
13 14 15 16 |
# File 'lib/one_apm/collector/samplers/cpu_sampler.rb', line 13 def initialize @processor_count = OneApm::Support::SystemInfo.num_logical_processors poll end |
Instance Attribute Details
#last_time ⇒ Object (readonly)
Returns the value of attribute last_time.
9 10 11 |
# File 'lib/one_apm/collector/samplers/cpu_sampler.rb', line 9 def last_time @last_time end |
Class Method Details
.supported_on_this_platform? ⇒ Boolean
49 50 51 52 |
# File 'lib/one_apm/collector/samplers/cpu_sampler.rb', line 49 def self.supported_on_this_platform? # Process.times on JRuby < 1.7.0 reports wall clock elapsed time, not actual cpu time used defined?(JRuby) ? (JRUBY_VERSION >= '1.7.0') : true end |
Instance Method Details
#poll ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/one_apm/collector/samplers/cpu_sampler.rb', line 22 def poll now = Time.now @poller.pid = Process.pid if @poller t = Process.times if @last_time elapsed = now - @last_time return if elapsed < 1 # Causing some kind of math underflow usertime = t.utime - @last_utime systemtime = t.stime - @last_stime if systemtime >= 0 OneApm::Manager.record_metric("CPU/System Time", systemtime) OneApm::Manager.record_metric("CPU/System/Utilization", systemtime / (elapsed * @processor_count)) end if usertime >= 0 cpu_utilization = @poller ? @poller.cpu_utilization : (usertime / (elapsed * @processor_count)) OneApm::Manager.record_metric("CPU/User Time", usertime) OneApm::Manager.record_metric("CPU/User/Utilization", cpu_utilization) end end @last_utime = t.utime @last_stime = t.stime @last_time = now end |
#set_poller(poller) ⇒ Object
18 19 20 |
# File 'lib/one_apm/collector/samplers/cpu_sampler.rb', line 18 def set_poller poller @poller = poller end |