Class: ScoutApm::Instruments::Process::ProcessMemory
- Inherits:
-
Object
- Object
- ScoutApm::Instruments::Process::ProcessMemory
- Defined in:
- lib/scout_apm/instruments/process/process_memory.rb
Instance Attribute Summary collapse
-
#logger ⇒ Object
readonly
Returns the value of attribute logger.
Class Method Summary collapse
- .rss ⇒ Object
- .rss_in_mb ⇒ Object
-
.rss_to_mb(rss) ⇒ Object
Account for Darwin returning maxrss in bytes and Linux in KB.
Instance Method Summary collapse
- #human_name ⇒ Object
-
#initialize(logger) ⇒ ProcessMemory
constructor
A new instance of ProcessMemory.
- #metric_name ⇒ Object
- #metric_type ⇒ Object
- #metrics(timestamp, store) ⇒ Object
- #run ⇒ Object
Constructor Details
#initialize(logger) ⇒ ProcessMemory
Returns a new instance of ProcessMemory.
20 21 22 |
# File 'lib/scout_apm/instruments/process/process_memory.rb', line 20 def initialize(logger) @logger = logger end |
Instance Attribute Details
#logger ⇒ Object (readonly)
Returns the value of attribute logger.
5 6 7 |
# File 'lib/scout_apm/instruments/process/process_memory.rb', line 5 def logger @logger end |
Class Method Details
.rss ⇒ Object
12 13 14 |
# File 'lib/scout_apm/instruments/process/process_memory.rb', line 12 def self.rss ::Process.rusage.maxrss end |
.rss_in_mb ⇒ Object
16 17 18 |
# File 'lib/scout_apm/instruments/process/process_memory.rb', line 16 def self.rss_in_mb rss_to_mb(rss) end |
.rss_to_mb(rss) ⇒ Object
Account for Darwin returning maxrss in bytes and Linux in KB. Used by the slow converters. Doesn’t feel like this should go here though…more of a utility.
8 9 10 |
# File 'lib/scout_apm/instruments/process/process_memory.rb', line 8 def self.rss_to_mb(rss) rss.to_f/1024/(ScoutApm::Agent.instance.environment.os == 'darwin' ? 1024 : 1) end |
Instance Method Details
#human_name ⇒ Object
32 33 34 |
# File 'lib/scout_apm/instruments/process/process_memory.rb', line 32 def human_name "Process Memory" end |
#metric_name ⇒ Object
28 29 30 |
# File 'lib/scout_apm/instruments/process/process_memory.rb', line 28 def metric_name "Physical" end |
#metric_type ⇒ Object
24 25 26 |
# File 'lib/scout_apm/instruments/process/process_memory.rb', line 24 def metric_type "Memory" end |
#metrics(timestamp, store) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/scout_apm/instruments/process/process_memory.rb', line 36 def metrics(, store) result = run if result = MetricMeta.new("#{metric_type}/#{metric_name}") stat = MetricStats.new(false) stat.update!(result) store.track!({ => stat }, :timestamp => ) else {} end end |
#run ⇒ Object
48 49 50 |
# File 'lib/scout_apm/instruments/process/process_memory.rb', line 48 def run self.class.rss_in_mb.tap { |res| logger.debug "#{human_name}: #{res.inspect}" } end |