module Memory::Leak::System
def self.memory_usage(process_id)
@parameter process_ids [Array(Integer)] The process IDs to monitor.
Get the memory usage of the given process IDs.
def self.memory_usage(process_id) IO.popen(["ps", "-o", "rss=", "-p", process_id.to_s]) do |io| return io.read.to_i * 1024 end end
def self.memory_usages(process_ids)
@parameter process_ids [Array(Integer)] The process IDs to monitor.
Get the memory usage of the given process IDs.
def self.memory_usages(process_ids) return to_enum(__method__, process_ids) unless block_given? if process_ids.any? IO.popen(["ps", "-o", "pid=,rss=", "-p", process_ids.join(",")]) do |io| io.each_line.map(&:split).each do |process_id, size| yield process_id.to_i, size.to_i * 1024 end end end end
def self.total_memory_size
def self.total_memory_size File.foreach("/proc/meminfo") do |line| if /MemTotal:\s*(?<total>\d+)\s*kB/ =~ line return total.to_i * 1024 end end end
def self.total_memory_size
def self.total_memory_size IO.popen(["sysctl", "hw.memsize"], "r") do |io| io.each_line do |line| if /hw.memsize:\s*(?<total>\d+)/ =~ line return total.to_i end end end end