Sha256: 003080c28367d23610018dcf516c1960e40ade4640661bce7d053df658d2e489
Contents?: true
Size: 1.52 KB
Versions: 3
Compression:
Stored size: 1.52 KB
Contents
require 'celluloid' class Eye::SystemResources # cached system resources class << self def memory(pid) cache.proc_mem(pid).try(:resident) end def cpu(pid) if cpu = cache.proc_cpu(pid) cpu.percent * 100 end end def children(parent_pid) cache.children(parent_pid) end def start_time(pid) # unixtime if cpu = cache.proc_cpu(pid) cpu.start_time.to_i / 1000 end end # total cpu usage in seconds def cputime(pid) if cpu = cache.proc_cpu(pid) cpu.total.to_f / 1000 end end def resources(pid) { :memory => memory(pid), :cpu => cpu(pid), :start_time => start_time(pid), :pid => pid } end def cache @cache ||= Cache.new end end class Cache include Celluloid attr_reader :expire def initialize clear setup_expire end def setup_expire(expire = 5) @expire = expire @timer.cancel if @timer @timer = every(@expire) { clear } end def clear @memory = {} @cpu = {} @ppids = {} end def proc_mem(pid) @memory[pid] ||= Eye::Sigar.proc_mem(pid) if pid rescue ArgumentError # when incorrect PID end def proc_cpu(pid) @cpu[pid] ||= Eye::Sigar.proc_cpu(pid) if pid rescue ArgumentError # when incorrect PID end def children(pid) if pid @ppids[pid] ||= Eye::Sigar.proc_list("State.Ppid.eq=#{pid}") else [] end end end end
Version data entries
3 entries across 3 versions & 2 rubygems
Version | Path |
---|---|
reel-eye-0.5.2.1 | lib/eye/system_resources.rb |
reel-eye-0.5.2 | lib/eye/system_resources.rb |
eye-0.5.2 | lib/eye/system_resources.rb |