Process::MetricsSourceProcessMetricsHostMemoryLinuxMeminfo

class Meminfo

Captures host memory from Linux /proc/meminfo.

Definitions

def self.supported?

Whether /proc/meminfo is available.

Signature

returns Boolean

Whether the procfs memory information exists.

Implementation

def self.supported?
	File.exist?("/proc/meminfo")
end

def capture

Capture host memory from /proc/meminfo.

Signature

returns Host::Memory | Nil

The captured host memory, if available.

Implementation

def capture
	content = File.read("/proc/meminfo") rescue nil
	return nil unless content
	
	total = read_total(content)
	return nil unless total && total.positive?
	
	used = read_used(content, total)
	used = 0 if used.nil? || used.negative?
	used = [used, total].min
	
	swap_total, swap_used = read_swap(content)
	reclaimable = read_reclaimable(content)
	
	return Host::Memory.new(total, used, swap_total, swap_used, reclaimable)
end