class MemstatCSV::Logger

Public Class Methods

new(options={}) click to toggle source
Calls superclass method
# File lib/memstat_csv.rb, line 10
def initialize(options={})
  prepare(options)
  super do
    monitor
  end
end

Private Instance Methods

headers() click to toggle source
# File lib/memstat_csv.rb, line 38
def headers
  ['time (s)'] +
    Memstat::Proc::Status::FIELDS +
    Memstat::Proc::Status::FIELDS.map{|f| "#{f} (MB)"}
end
monitor() click to toggle source
# File lib/memstat_csv.rb, line 19
def monitor
  @csv=CSV.open(@path, 'wb')
  @csv.sync=true
  @csv << headers
  while true
    @memstat=Memstat::Proc::Status.new(pid: Process.pid)
    @csv << [(Time.now - @start_time).round(3)] + stats
    sleep @sleep_time
  end
end
prepare(options={}) click to toggle source
# File lib/memstat_csv.rb, line 30
def prepare(options={})
  @sleep_time = options[:sleep_time] || 1
  basedir = File.expand_path(options[:basedir] || Dir.tmpdir)
  FileUtils.mkdir_p(basedir) unless File.directory?(basedir)
  @path = File.join(basedir, "memlog-#{Process.pid}.csv")
  @start_time=Time.now
end
stats() click to toggle source
# File lib/memstat_csv.rb, line 44
def stats
  Memstat::Proc::Status::FIELDS.map{ |f|
    @memstat.send(f)
  } + Memstat::Proc::Status::FIELDS.map{ |f|
    @memstat.send(f) / 1024**2
  }
end