class RorVsWild::Metrics::Memory
def convert_to_bytes(string)
def convert_to_bytes(string) value, unit = string.split value.to_i * units[unit.downcase] end
def ram_used
def ram_used ram_total - ram_available end
def read_meminfo
def read_meminfo return unless File.readable?(PROC_MEMINFO) File.read(PROC_MEMINFO).split("\n").reduce({}) do |hash, line| name, value = line.split(":") hash[name] = value.strip hash end end
def swap_used
def swap_used swap_total - swap_free end
def units
def units @units ||= {"kb" => 1000, "mb" => 1000 * 1000, "gb" => 1000 * 1000 * 1000}.freeze end
def update
def update return unless info = read_meminfo @ram_total = convert_to_bytes(info[MEM_TOTAL]) @ram_free = convert_to_bytes(info[MEM_FREE]) @ram_available = convert_to_bytes(info[MEM_AVAILABLE]) @ram_buffers = convert_to_bytes(info[BUFFERS]) @ram_cached = convert_to_bytes(info[CACHED]) @swap_total = convert_to_bytes(info[SWAP_TOTAL]) @swap_free = convert_to_bytes(info[SWAP_FREE]) end