class PiSys::Memory

Constants

COMMAND
KEY
VARIATIONS

Public Class Methods

new() click to toggle source
Calls superclass method PiSys::Stats::new
# File lib/pi-sys/stats/memory.rb, line 8
def initialize
  @vcgencmd = Vcgencmd.new(KEY, COMMAND)
  super(KEY, VARIATIONS)
end

Public Instance Methods

fetch() click to toggle source
Calls superclass method PiSys::Stats#fetch
# File lib/pi-sys/stats/memory.rb, line 13
def fetch
  super

  # status
  output = fetch_status
  if output
    output.gsub!(/ kB$/, '').gsub(/\: */, ' ')
    to_hash([KEY, :status], output) do |data|
      {data[0].gsub(':','') => data[1].to_i / 1024}
    end

    STATS[KEY][:status]['MemUsed'] = STATS[KEY][:status]['MemTotal'] - STATS[KEY][:status]['MemFree'] -
      STATS[KEY][:status]['Buffers'] - STATS[KEY][:status]['Cached']
  else
    STATS[KEY][:status] = {}
  end

  # info
  output = @vcgencmd.fetch
  if output
    STATS[KEY][:info] = @vcgencmd.fetch
  else
    STATS[KEY][:info] = {}
  end

  # usage
  output = fetch_usage
  if output
    to_hash([KEY, :usage], output, 1) do |data|
      name = data[0]
      value = data[1].to_i / 1024
      if STATS[KEY][:usage][name]
        STATS[KEY][:usage][name] += value
        {}
      else
        {name => value}
      end
    end

    STATS[KEY][:usage] = Hash[STATS[KEY][:usage].sort_by { |_, v| -v }]
  else
    STATS[KEY][:usage] = {}
  end
  STATS[KEY]
end

Private Instance Methods

fetch_status() click to toggle source
# File lib/pi-sys/stats/memory.rb, line 61
def fetch_status
  file = File.open('/proc/meminfo', 'rb')
  output = file.read
  file.close
  output
end
fetch_usage() click to toggle source
# File lib/pi-sys/stats/memory.rb, line 68
def fetch_usage
  run_command 'ps -eo comm,rss'
end