Module: Evilution::Memory

Defined in:
lib/evilution/memory.rb

Defined Under Namespace

Classes: LeakCheck

Constant Summary collapse

PROC_STATUS_PATH =
"/proc/%d/status"
RSS_PATTERN =
/VmRSS:\s+(\d+)\s+kB/

Class Method Summary collapse

Class Method Details

.deltaObject



31
32
33
34
35
36
37
# File 'lib/evilution/memory.rb', line 31

def delta
  before = rss_kb
  result = yield
  after = rss_kb
  delta_kb = before && after ? after - before : nil
  [result, delta_kb]
end

.rss_kbObject



9
10
11
# File 'lib/evilution/memory.rb', line 9

def rss_kb
  rss_kb_for(Process.pid)
end

.rss_kb_for(pid) ⇒ Object



20
21
22
23
24
25
26
27
28
29
# File 'lib/evilution/memory.rb', line 20

def rss_kb_for(pid)
  path = format(PROC_STATUS_PATH, pid)
  content = File.read(path)
  match = content.match(RSS_PATTERN)
  return nil unless match

  match[1].to_i
rescue Errno::ENOENT, Errno::EACCES, Errno::ESRCH
  nil
end

.rss_mbObject



13
14
15
16
17
18
# File 'lib/evilution/memory.rb', line 13

def rss_mb
  kb = rss_kb
  return nil unless kb

  kb / 1024.0
end