class GitLab::Exporter::MemStats::Mapping
Parses one entry in /proc//smaps. For example:
00400000-00401000 r-xp 00000000 08:01 541055 /opt/gitlab/embedded/bin/ruby Size: 4 kB Rss: 4 kB Pss: 0 kB Shared_Clean: 4 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 4 kB Anonymous: 0 kB AnonHugePages: 0 kB Shared_Hugetlb: 0 kB Private_Hugetlb: 0 kB Swap: 0 kB SwapPss: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd ex mr mw me dw sd
Constants
- FIELDS
Attributes
address_end[R]
address_start[R]
device_major[R]
device_minor[R]
inode[R]
offset[R]
perms[R]
private_clean[RW]
private_dirty[RW]
pss[RW]
region[R]
rss[RW]
size[RW]
swap[RW]
Public Class Methods
new(lines)
click to toggle source
# File lib/gitlab_exporter/memstats/mapping.rb, line 48 def initialize(lines) FIELDS.each do |field| send("#{field}=", 0) end parse_first_line(lines.shift) lines.each do |l| parse_field_line(l) end end
Public Instance Methods
parse_field_line(line)
click to toggle source
# File lib/gitlab_exporter/memstats/mapping.rb, line 72 def parse_field_line(line) line.strip! parts = line.split return unless parts parts[0].downcase! parts[0].sub!(":", "") field = parts[0] return unless respond_to? "#{field}=" value = Float(parts[1]).to_i send("#{field}=", value) end
parse_first_line(line)
click to toggle source
# File lib/gitlab_exporter/memstats/mapping.rb, line 60 def parse_first_line(line) line.strip! parts = line.split @address_start, @address_end = parts[0].split("-") @perms = parts[1] @offset = parts[2] @device_major, @device_minor = parts[3].split(":") @inode = parts[4] @region = parts[5] || "anonymous" end