class ScoutApm::Instruments::Process::ProcessMemory

Public Class Methods

new(context) click to toggle source
# File lib/scout_apm/instruments/process/process_memory.rb, line 21
def initialize(context)
  @context = context
end

Public Instance Methods

human_name() click to toggle source
# File lib/scout_apm/instruments/process/process_memory.rb, line 33
def human_name
  "Process Memory"
end
logger() click to toggle source
# File lib/scout_apm/instruments/process/process_memory.rb, line 53
def logger
  @context.logger
end
metric_name() click to toggle source
# File lib/scout_apm/instruments/process/process_memory.rb, line 29
def metric_name
  "Physical"
end
metric_type() click to toggle source
# File lib/scout_apm/instruments/process/process_memory.rb, line 25
def metric_type
  "Memory"
end
metrics(timestamp, store) click to toggle source
# File lib/scout_apm/instruments/process/process_memory.rb, line 37
def metrics(timestamp, store)
  result = run
  if result
    meta = MetricMeta.new("#{metric_type}/#{metric_name}")
    stat = MetricStats.new(false)
    stat.update!(result)
    store.track!({ meta => stat }, :timestamp => timestamp)
  else
    {}
  end
end
rss() click to toggle source
# File lib/scout_apm/instruments/process/process_memory.rb, line 13
def rss
  ::Process.rusage.maxrss
end
rss_in_mb() click to toggle source
# File lib/scout_apm/instruments/process/process_memory.rb, line 17
def rss_in_mb
  rss_to_mb(rss)
end
rss_to_mb(rss) click to toggle source

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.

# File lib/scout_apm/instruments/process/process_memory.rb, line 8
def rss_to_mb(rss)
  kilobyte_adjust = @context.environment.os == 'darwin' ? 1024 : 1
  rss.to_f / 1024 / kilobyte_adjust
end
run() click to toggle source
# File lib/scout_apm/instruments/process/process_memory.rb, line 49
def run
  rss_in_mb.tap { |res| logger.debug "#{human_name}: #{res.inspect}" }
end