class Process::Metrics::Memory
Constants
- MAP
Public Class Methods
capture(pids)
click to toggle source
# File lib/process/metrics/memory.rb, line 57 def self.capture(pids) usage = self.new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) pids.each do |pid| if lines = File.readlines("/proc/#{pid}/smaps") lines.each do |line| # The format of this is fixed according to: # https://github.com/torvalds/linux/blob/351c8a09b00b5c51c8f58b016fffe51f87e2d820/fs/proc/task_mmu.c#L804-L814 if /(?<name>.*?):\s+(?<value>\d+) kB/ =~ line if key = MAP[name] usage[key] += value.to_i end elsif /VmFlags:\s+(?<flags>.*)/ =~ line # It should be possible to extract the number of fibers and each fiber's memory usage. # flags = flags.split(/\s+/) usage.map_count += 1 end end end end return usage end
supported?()
click to toggle source
# File lib/process/metrics/memory.rb, line 39 def self.supported? true end
Public Instance Methods
to_json(*arguments)
click to toggle source
# File lib/process/metrics/memory.rb, line 29 def to_json(*arguments) as_json.to_json(*arguments) end
unique_size()
click to toggle source
The unique set size, the size of completely private (unshared) data.
# File lib/process/metrics/memory.rb, line 34 def unique_size self.private_clean_size + self.private_dirty_size end